如何使用python获取元素?

时间:2016-09-09 01:00:49

标签: imputation

我对如何使用这样的库和函数实现它一无所知。任何人都可以给我一些想法。只是一些功能名称或想法或一些有用的网站网址将是好的!谢谢!

我认为这是不同的。

1 个答案:

答案 0 :(得分:0)

线性回归如何映射到您的问题?

  • 给定矩阵X,行可以表示样本,列可以表示变量。

  • 包含nunmpy.nan值的列表示目标变量(" y")。其余列表示输入变量(x1,x2,...)。

  • 具有观察值的行代表训练集,其余代表测试集。

代码

以下是使用示例矩阵X实现这些点的代码段。

import numpy as np
from sklearn.linear_model import LinearRegression

X = np.array([[1, 2, 3], [2, 4, np.nan], [3, 6, 9]])

# Unknown rows (test examples), i.e. rows with a nan 
impute_rows = np.any(np.isnan(X), axis=1)

# Known rows (training examples), i.e. rows without a nan
full_rows = np.logical_not(impute_rows)

# Column acting as variable to predict
output_var = np.any(np.isnan(X), axis=0)
input_var  = np.logical_not(output_var)

# Check only one variable to predict
assert(np.sum(output_var)==1)

# Construct traing/test input/output
train_input  = X[np.ix_(full_rows, input_var)]
train_output = X[np.ix_(full_rows, output_var)] 
test_input = X[np.ix_(impute_rows, input_var)]

# Perform regression
lr = LinearRegression()
lr.fit(train_input, train_output)
lr.predict(test_input)

请注意,使用您提供的特定X表示过于简单的情况,其中只有两个点适合,但这些想法应适用于较大的矩阵。

还要注意存在其他更专业的方法来从矩阵中计算缺失值(在你的问题中可以理解这是一个练习)。如果矩阵元素之间存在线性关系,则此特定方法可能有效(如简化示例中的情况)。