多变量KNN预测

时间:2018-05-03 20:29:59

标签: python pandas machine-learning scikit-learn knn

所以,如果我的数据有1个功能来预测下一个结果,那么我的代码适用于knn.predict()。为了把它放到上下文中,我有库存数据(开放,高,低,关闭),我使用" Open" as" X"数据和"关闭" as" Y" data和knn.predict将预测Y的下一个值。

当我尝试使用"打开,高,低"我的X数据的列(3个功能),我收到以下错误:

File "sklearn\neighbors\binary_tree.pxi", line 1294, in sklearn.neighbors.kd_tree.BinaryTree.query
ValueError: query data dimension must match training data dimension

我相信这是因为我的X.shape和Y.shape,其中X与Y的大小不同,但我不明白如何修复它。如果X和Y的大小必须相同,那么如何使用KNN进行多功能分析呢?

部分代码:

df = df[['Date','Time', 'Open', 'High', 'Low', 'Close']]
df.head()

# Predictor Variables
df['Open'] = df.Open
df['High'] = df.High
df['Low'] = df.Low
df['Close'] = df.Close
df = df.dropna()
#Data = np.delete(arr = df, obj=0, axis = 0)
X = np.array(df.ix[:, 2:6])
#X.head()
print X.shape

# Target Variable
Y = np.where(df['Close'].shift(-1)>df['Close'],1,-1)
#print (Y)

#Predict
u = df['Close'].iloc[-1]
#print u
new_prediction = knn.predict(u)
print new_prediction

1 个答案:

答案 0 :(得分:1)

对于培训,您正在使用

X = np.array(df.ix[:, 2:6])

,即一个6 - 2 = 4列的矩阵,意味着邻居是4元组。

预测时,您正在使用

u = df['Close'].iloc[-1]

这是一个标量。

最近的邻居未定义,sklearn非常不满意。