写一段python代码,对 Excel 文件,以第17其中1代表喜欢,2代表不喜欢,3一般)、18其中(1代表优秀,2代表良好,3代表中等,4代表及格,5代表不及格)、19(1代表优秀,2代表比较优秀,3代表一般,4代表比较差,5代表非常差)、20列(1代表是,2否)作为特征输入,第39列作为目标输出(其中1代表从事本专业工作,2代表从事本专业相关工作,3代表从事本专业无关工作,4代表不太确定)。构建决策树。可视化决策树,最后显示准确率,要求输入一组数据要预测出结果
时间: 2023-06-24 22:03:12 浏览: 31
以下是代码实现:
``` python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
from sklearn.metrics import accuracy_score
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 提取特征和目标列
X = df.iloc[:, [16, 17, 18, 19]].values
y = df.iloc[:, 38].values
# 构建决策树模型
clf = DecisionTreeClassifier(criterion='entropy', random_state=0)
clf.fit(X, y)
# 可视化决策树
tree.plot_tree(clf)
# 预测一组数据
test_data = [[1, 2, 3, 1]]
prediction = clf.predict(test_data)
print('预测结果:', prediction)
# 计算准确率
y_pred = clf.predict(X)
accuracy = accuracy_score(y, y_pred)
print('准确率:', accuracy)
```
其中,`data.xlsx` 是 Excel 文件的文件名,需要将文件放在代码文件的同一目录下。代码中的第 16、17、18、19 列分别对应 Excel 文件的第 17、18、19、20 列,第 38 列对应 Excel 文件的第 39 列。预测时需要将需要预测的一组数据存储在 `test_data` 变量中。