Machine learning 为什么sklearn插补器需要匹配?

Machine learning 为什么sklearn插补器需要匹配?,machine-learning,scikit-learn,Machine Learning,Scikit Learn,我对机器学习这门课很陌生,我正在上一门关于这门课的在线课程。在本课程中,讲师展示了以下代码: imputer = Inputer(missing_values = 'Nan', strategy = 'mean', axis=0) imputer = Imputer.fit(X[:, 1:3]) X[:, 1:3] = imputer.transform(X[:, 1:3]) 我真的不明白为什么这个输入对象需要匹配。我的意思是,我只是想用列mean替换掉我的列中缺少的值。从我对编程所知的一点来

我对机器学习这门课很陌生,我正在上一门关于这门课的在线课程。在本课程中,讲师展示了以下代码:

imputer = Inputer(missing_values = 'Nan', strategy = 'mean', axis=0)
imputer = Imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])
我真的不明白为什么这个输入对象需要
匹配
。我的意思是,我只是想用列mean替换掉我的列中缺少的值。从我对编程所知的一点来看,这是一个非常简单的迭代过程,不需要一个需要训练数据才能完成的模型

有人能解释一下这个插补器是如何工作的,以及为什么它需要培训来用列平均值替换一些缺失的值吗? 我读过sci工具包的文档,但它只是展示了如何使用这些方法,而不是为什么需要它们


谢谢。

插补器用数据的一些统计数据(例如,平均值、中值等)填充缺失的值。 为了避免交叉验证期间的数据泄漏,它在
fit
期间计算序列数据上的统计信息,在
转换
期间将其存储并用于测试数据

来自sklearn.preprocessing导入插补器的

obj=输入者(策略=‘平均’)
对象匹配([[1,2,3],[2,3,4]]
打印(对象统计)
#数组([1.5,2.5,3.5])
X=对象变换([[4,np.nan,6],[5,6,np.nan]]
打印(X)
#数组([[4,2.5,6.],
#        [ 5. ,  6. ,  3.5]])
如果您的训练和测试数据相同,可以使用
fit\u transform
一次完成这两个步骤

X=obj.fit_变换([[1,2,np.nan],[2,3,4]]
打印(X)
#数组([[1,2,4.],
#        [ 2. ,  3. ,  4. ]])
此数据泄漏问题很重要,因为数据分布可能会从训练数据更改为测试数据,并且您不希望测试数据的信息在拟合期间已经存在


有关详细信息,请参阅文档。

回答得好。请举例说明这一点,你是好的。