- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 scikit_learn 和 pandas 解决 python 中的决策树问题。该数据集以 CSV 文件形式提供。当我尝试在 python 中加载数据时,出现错误“ValueError: 无法将字符串转换为 float :'CustomerID'”。我不知道我在代码中做错了什么。
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn import metrics
col_names=['CustomerID','Gender','Car Type', 'Shirt Size','Class']
pima=pd.read_csv("F:\Current semster courses\Machine
Learning\ML_A1_Fall2019\Q2_dataset.csv",header=None, names=col_names)
pima.head()
feature_cols=['CustomerID','Gender','Car Type', 'Shirt Size']
X=pima[feature_cols]
y=pima.Class
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
clf = DecisionTreeClassifier()
# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)
#Predict the response for test dataset
y_pred = clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
有人可以告诉我我做错了什么吗?
数据集:
CustomerID Gender Car Type Shirt Size Class
1 M Family Small C0
2 M Sports Medium C0
3 M Sports Medium C0
4 M Sports Large C0
5 M Sports Extra Large C0
6 M Sports Extra Large C0
7 F Sports Small C0
8 F Sports Small C0
9 F Sports Medium C0
10 F Luxury Large C0
11 M Family Large C1
12 M Family Extra Large C1
13 M Family Medium C1
14 M Luxury Extra Large C1
15 F Luxury Small C1
16 F Luxury Small C1
17 F Luxury Medium C1
18 F Luxury Medium C1
19 F Luxury Medium C1
20 F Luxury Large C1
最佳答案
啊。好的。问题是您的数据是分类数据,scikit
无法直接使用。首先需要将其转换为数值数据。 ._get_dummies()
方法通过获取具有多个分类值的单列,并将其转换为多列来实现此目的,每列包含一个数字 1 或 0,指示哪个类别是否为“True”。
顺便说一句,您应该从功能中删除“客户 ID”列。它是一个随机值,与该行属于一个类还是另一个类无关。
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn import metrics
col_names=['CustomerID','Gender','Car Type', 'Shirt Size','Class']
data = [['1', 'M', 'Family', 'Small', 'C0'],
['2', 'M', 'Sports', 'Medium', 'C0'],
['3', 'M', 'Sports', 'Medium', 'C0'],
['4', 'M', 'Sports', 'Large', 'C0'],
['5', 'M', 'Sports', 'Extra Large','C0'],
['6', 'M', 'Sports', 'Extra Large','C0'],
['7', 'F', 'Sports', 'Small', 'C0'],
['8', 'F', 'Sports', 'Small', 'C0'],
['9', 'F', 'Sports', 'Medium', 'C0'],
['10', 'F', 'Luxury', 'Large', 'C0'],
['11', 'M', 'Family', 'Large', 'C1'],
['12', 'M', 'Family', 'Extra Large','C1'],
['13', 'M', 'Family', 'Medium', 'C1'],
['14', 'M', 'Luxury', 'Extra Large','C1'],
['15', 'F', 'Luxury', 'Small', 'C1']]
#pima=pd.read_csv("F:\Current semster courses\Machine ...
pima=pd.DataFrame(data, columns = col_names)
# Convert the categorical data to multiple columns of numerical data for the decision tree
pima = pd.get_dummies(pima, prefix=['CustomerID','Gender','Car Type', 'Shirt Size','Class'])
print(pima)
#feature_cols=['CustomerID','Gender','Car Type','Shirt Size']
feature_cols=['Gender_F', 'Gender_M',
'Car Type_Family', 'Car Type_Luxury', 'Car Type_Sports',
'Shirt Size_Extra Large', 'Shirt Size_Large', 'Shirt Size_Medium',
'Shirt Size_Small', 'Class_C0', 'Class_C1']
X=pima[feature_cols]
y=pima[['Class_C0', 'Class_C1']]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
print("X_train =", X_train)
print("X_test =", X_test)
print("y_train =", y_train)
print("y_test =", y_test )
clf = DecisionTreeClassifier()
# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)
#Predict the response for test dataset
y_pred = clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
关于python - 如何使用panda.read_csv从python中的csv文件导入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464750/
我正在尝试使用 dask 读取 csv 文件,它给了我如下错误。但问题是我想要我的 ARTICLE_ID是 object(string) .谁能帮我成功读取数据? 回溯如下: ValueError:
我有一个文件,其中包含如下数据 1000000 183:0.6673;2:0.3535;359:0.304;363:0.1835 1000001 92:1.0 1000002 112:1.0 1000
我刚刚注意到 read_csv()以某种方式使用了意外的随机数(至少对我而言)。对应的基R函数read.csv()不这样做。那么,read_csv() 是什么意思?使用随机数?我查看了文档,但找不到明
我有一个 csv 文件,其中包含日期和时间戳作为两列。我正在使用 Pandas read_csv将内容读入数据帧。我的最终目标是根据数据绘制时间序列图。 !head vmstat.csv wait_p
我正在解析大量 csv 数据。数据相当“脏”,因为我有不一致的分隔符、虚假字符和格式问题,这些问题会导致 出现问题。 read_csv() . 然而,我的问题不是数据的肮脏,而是试图理解 的解析错误。
我有以下 csv: value value value value ... id 1 1 1
我无法读取仅知道部分文件名的 csv 文件。这是我所做的,但出现错误: "pandas.errors.ParserError: Error tokenizing data." What should
我想知道是否有办法在 read_csv() 过程中读取分类值。 通常您可以在事后进行转换,例如: df.zone = df.zone.astype('category') 此时 df 占用了更多内存,
我尝试用 pandas 分析的 HTTP 日志文件有时会有意外的行。这是我加载数据的方式: df = pd.read_csv('mylog.log', sep=r'\s(?=(
csv 数据示例: 2019-08-15 00:00:06,430 0:0 - {"info":{"name":"LTD - PUBLIC"}} pd.read_csv(filepath, sep=
我对 python 很陌生。 我正在尝试使用 python 自动执行一些建筑能耗数据的数据分析。我正在使用 python 2.7.3、pandas 0.12、Canopy with qtconsole
我有一个 csv 文件,格式如下: 0;2017-02-16 15:08:16;81,307877;;;;;;; 因此,分号作为分隔符,日期和时间以及带小数点逗号的 float 。最后是一堆分号。 P
我有一个 csv 文件如下: 0 5 1 10 2 15 3 20 4 25 我想将其保存为名称为 x,y 轴的数据框,然后绘制它。但是,当我分配 x,y 时,我得到了一个困惑的 DataFrame,
这里将更新最新的最全面的read_csv()函数功能以及参数介绍,参考资料来源于官网。 pandas库简介 官方网站里详细说明了pandas库的安装以及使用方法,在这里获取最新的pandas库信
从windows操作系统本地读取csv文件报错 ? 1
pandas.read_csv()遇到读进来乱码问题 1.设置encoding='gbk'或者encoding='utf-8'。pandas.read_csv('data.csv',encodin
我有一个包含日期、国家/地区(只能在预定义列表中取值)等信息的 csv 文件,我目前正在使用 converters 参数来进行一些完整性检查,如下所示: import pandas as pd def
我是 Pandas 库的新手。 我共享了基于数据框的代码。 有没有办法在没有任何定界符的情况下逐行读取 gzip 文件(使用整行,该行可以包含逗号和其他字符)作为单行并在数据框中使用它?似乎你必须提供
我正在有效地尝试将以下文件读入 DataFrame 并再次将其原封不动地写出。 F1,F2,F3,F4,F5 "blah","blah",123,"123","123" "blue","blue",4
我正在尝试读取一个在每个单元格中包含多个值的 csv 文件,并且我想将它们编码为单个 int 格式的字节以存储在 Pandas 单元格中,(例如 (1, 1) -> 771)。为此,我想使用 read
我是一名优秀的程序员,十分优秀!