python做人工智能的决策树报错问题(100分)

weixin_29739431 2017-03-30 07:46:40
绝对新人,先给大佬们递茶~
这学期上一门人工智能的课,老师让下了python,给了一个画决策树的代码,可是我原模原样写下来后却报错,搞了好几天也不知道是什么原因。我的python是2.7的版本。求大佬们指点~
错误应该都是在第14行,有好几处画红波浪线的地方:





源代码在这:

# -*- coding=utf-8 -*-
from sklearn import tree
from sklearn.externals.six import StringIO
import pydot
import pandas as pd
from sklearn.feature_extraction import DictVectorizer
import numpy as np
D = pd.read_csv('xigua.csv',sep=',',header=0)
del D[D.columns[0]]
Y = D['label_haogua']
del D['lable_haogua']
dv_D = DictVectorizer(sparse=False)
df = D.convert_objects(convert_numberic=True)
D = dv D.fit transform(df.to dict(orient='records'))
x = np.array(list(D))
y = np.array(list(Y))
idx = range(len(y))
np.random.shuffle(idx)x = x[idx]
y = y[idx]
x_train=x[:-2]
y_train=y[:-2]
x_test=x[-2:]
y_test=y[-2:]
clf=tree.DecisionTreeClassifier(criterion='entropy')
clf=clf.fit(x_train,y_train)
dot_data=StringIO()
tree.export_graphviz(clf,out_file=dot_data,feature_names=dv_D.feature_names_)
graph=pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_png('xigua_tree.png')
pred_y = clf.predict(x_test)
print 'INPUT:'
print dv_D.feature_names_
print x_test
print 'XG-ROBOT\'S PREDICTION:',pred_y
print 'REAL LABELS:',y_test

...全文
344 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
CDSoftwareWj 2017-03-30
  • 打赏
  • 举报
回复
哇哈哈哈哈,第一次见这种风格的python代码。。。。。。
weixin_29739431 2017-03-30
  • 打赏
  • 举报
回复
引用 4 楼 selecthis 的回复:
[quote=引用 3 楼 weixin_29739431 的回复:] [quote=引用 1 楼 selecthis 的回复:] D = dv D.fit transform(df.to dict(orient='records')) 这是啥?中间一个空格算怎么回事?
你好!我看我老师给的代码就是这样写的。。:那里应该就是有个空格吧[/quote] 我觉得应该是 D = dv_D.fit transform(df.to dict(orient='records')) 而不是 D = dv D.fit transform(df.to dict(orient='records'))[/quote] 这个我试过了~还是不行。其实这行后面还有几个空格。。。python里可不可以用空格呀?隐约记得听人说过2.7里有空格,3.5里就没有了
李察德-泰森 2017-03-30
  • 打赏
  • 举报
回复
引用 3 楼 weixin_29739431 的回复:
[quote=引用 1 楼 selecthis 的回复:] D = dv D.fit transform(df.to dict(orient='records')) 这是啥?中间一个空格算怎么回事?
你好!我看我老师给的代码就是这样写的。。:那里应该就是有个空格吧[/quote] 我觉得应该是 D = dv_D.fit transform(df.to dict(orient='records')) 而不是 D = dv D.fit transform(df.to dict(orient='records'))
weixin_29739431 2017-03-30
  • 打赏
  • 举报
回复
引用 1 楼 selecthis 的回复:
D = dv D.fit transform(df.to dict(orient='records')) 这是啥?中间一个空格算怎么回事?
你好!我看我老师给的代码就是这样写的。。:那里应该就是有个空格吧
weixin_29739431 2017-03-30
  • 打赏
  • 举报
回复
你好!我看我老师给的代码就是这样写的。。:那里应该就是有个空格吧
李察德-泰森 2017-03-30
  • 打赏
  • 举报
回复
D = dv D.fit transform(df.to dict(orient='records')) 这是啥?中间一个空格算怎么回事?

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧