【问题标题】:multivariate KNN prediction多元 KNN 预测
【发布时间】:2018-10-14 06:14:36
【问题描述】:

所以,如果我的数据具有 1 个特征来预测下一个结果,我就有适用于 knn.predict() 的代码。为了将其置于上下文中,我有股票数据(开盘价、最高价、最低价、收盘价),其中我使用“开盘”作为“X”数据,“收盘”作为“Y”数据,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

【问题讨论】:

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


    【解决方案1】:

    对于训练,你正在使用

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

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

    为了预测,你正在使用

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

    这是一个标量。

    最近邻未定义,sklearn很不爽。

    【讨论】:

    • 好的,我明白了。所以 X.shape 打印为 (43511, 4) 那么这不是 4 元组吗?如果我将代码更改为 X = df[['Open'']],那么代码可以正常工作。这是因为现在 X 也是一个标量吗?
    • 差不多。 df[['Open']] 不是一个标量数组,而是一个 1 元组数组。 Numpy 区分沿某个轴具有维度 1 的二维数组、一维数组和标量。除此之外,是的。
    猜你喜欢
    • 2017-11-01
    • 2020-09-22
    • 2016-10-15
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2022-01-15
    • 2020-05-15
    相关资源
    最近更新 更多