我的目标是根据包含六列的csv数据,预测一个数组中五到六个数字。下面的脚本原本是预测一个数组中的一个数字。我以为我可以从中逐步扩展到整个5或6个数字,但这可能是我错了。
更多信息:
请问您能否解释一下,在最终的rfp
和tmp
行中,我请求脚本预测的是什么?
我的数据看起来像这样:
目前的脚本会产生一个错误:
Traceback (most recent call last): File "C:\Users\conra\Desktop\Code\lotto\pie.py", line 43, in <module> train() File "C:\Users\conra\Desktop\Code\lotto\pie.py", line 37, in train rfp = rf_model.predict(fintest.reshape(1, -1)) File "C:\Users\conra\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\ensemble\_forest.py", line 784, in predict X = self._validate_X_predict(X) File "C:\Users\conra\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\ensemble\_forest.py", line 422, in _validate_X_predict return self.estimators_[0]._validate_X_predict(X, check_input=True) File "C:\Users\conra\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\tree\_classes.py", line 402, in _validate_X_predict X = self._validate_data(X, dtype=DTYPE, accept_sparse="csr", File "C:\Users\conra\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\base.py", line 437, in _validate_data self._check_n_features(X, reset=reset) File "C:\Users\conra\AppData\Local\Programs\Python\Python39\lib\site-packages\sklearn\base.py", line 365, in _check_n_features raise ValueError(ValueError: X has 5 features, but DecisionTreeRegressor is expecting 6 features as input.
通过向ft
数组添加第六个数字,我可以绕过这个错误,并得到非常不准确的输出,这些输出似乎与数据完全没有关联。例如,通过将变量ft
设置为[9,8,15,4,6,2]
(这是csv文件中的第一行),并将X和y设置为使用’Four’标签;我得到了[37.22]
和[37.]
的输出。
我的其他问题可能会通过我的第一个问题得到解答。但在这里提出:
您能否也解释一下为什么我需要传递一个包含6个元素的数组?
还有,为什么我的预测结果如此接近(都约为35),无论我传递什么数组进行预测?
回答:
您定义的X方式是错误的。它包含了6个特征。
您定义的方式使得y包含在X中:
X = df #6个特征y = X['One'] #1个特征
我想您想要做的可能是这样的:
X = df[['Two', 'Three', 'Four', 'Five', 'Zero']]y = df['One']