gpt4 book ai didi

python - 无法将 scikit-learn 的 DecisionTreeClassifier 的输出保存到 CSV

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:09 25 4
gpt4 key购买 nike

我有以下代码,旨在为 scikit-learn 的 DecisionTreeClassifier 获取一些训练和测试数据。它一直有效,直到我希望将 .predict 函数的输出保存到 CSV 中。到目前为止的代码是:

import numpy as np
import pandas as pd
from sklearn import tree

with open('data/training.csv', 'r') as f:

df = pd.read_csv(f, index_col=None)

df['Num_Labels'] = df.Label.map(lambda x: '-1' if x == 's' else '1') # Convert labels to '0' or '1'.

Train_values = df.iloc[:, 1:31].values
Train_labels = df.iloc[:, 33:34].values
# print Train_values.values
# print type(Train_values.values)

with open('data/test.csv', 'r') as f2:

df2 = pd.read_csv(f2, index_col=None)

Test_values = df2.iloc[:, 1:31].values

# #----------------------------------------------------------------------------------------------

X = Train_values
Y = Train_labels

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

Pred = clf.predict(Test_values)

#print Pred
#print type(Pred[:1])
np.savetxt('Output.csv', Pred, delimiter =' ')

终端输出如下:

/usr/bin/python2.7 /home/amit/PycharmProjects/HB/Read.py
Traceback (most recent call last):
File "/home/amit/PycharmProjects/HB/Read.py", line 38, in <module>
np.savetxt('Output.csv', Pred, delimiter =' ')
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1073, in savetxt
fh.write(asbytes(format % tuple(row) + newline))
TypeError: float argument required, not str
['1' '-1' '-1' ..., '1' '1' '1']
<type 'numpy.ndarray'>

Process finished with exit code 1

最佳答案

Pred 很可能有可疑之处。 npyio.py 中的savetxt 代码非常简单:

for row in X:
fh.write(asbytes(format % tuple(row) + newline))

这会逐行读取 X(输入数组,在本例中为 Pred)。格式字符串 format 在这种情况下是 %f %f %f ,占位符与一行中的元素(即列数)一样多。错误消息提示在向量 row 中除了浮点值之外还有其他东西。此外,错误消息看起来好像是短文本字符串而不是 float 。

我的猜测是 Pred 是一个 ndarray。如果不是,那就奇怪了。但是,它可能是一个字符串数组,而不是一个 float 或其他数字数组!

您几乎可以在尝试时找到它,但是:

print Pred.dtype

如果它类似于 S3,那么您就有了一个字符串数组。在这种情况下,我建议您检查 XY 的数据类型是否正确。如果它们不是数字,事情可能会变得有点奇怪。

关于python - 无法将 scikit-learn 的 DecisionTreeClassifier 的输出保存到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24640954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com