from sklearn.feature_extraction import DictVectorizer from sklearn import tree,preprocessing import csv from sklearn.externals.six import StringIO from sklearn.externals import joblib f = open('w.csv','rb') csv_r = csv.reader(f) header = csv_r.next() f_list = [] #存储的是每条数据 以字典的形式 key 是该数据对应的key l_list = [] #存储的是最后结果的集合 for row in csv_r : l_list.append(row[-1]) r_dict = {} for i in range(1,len(row)-1): r_dict[header[i]] = row[i] f_list.append(r_dict) # print f_list vec = DictVectorizer() dummyX = vec.fit_transform(f_list).toarray() #将列表里全是字典的格式 转换成 列表中全是列表 但是每个元素对应不同属性 以 0 1 表示 # print dummyX # # print vec.get_feature_names() #这个是对应关系 # # # lb = preprocessing.LabelBinarizer() # dummyY = lb.fit_transform(l_list) #将结果列表转成同样的格式 # # print dummyY # # clf = tree.DecisionTreeClassifier(criterion="entropy") #分类器 创建决策树 参数是选择的算法 这里是用信息熵 # clf = clf.fit(dummyX,dummyY) #建模 # joblib.dump(clf,"my_model.m") #保存模型 # # print clf # with open("ppp.dot","w") as fff: # fff = tree.export_graphviz(clf,feature_names=vec.get_feature_names(),out_file=fff) #这里是画图 feature_names是把特征值属性还原成原来的名字不再是 0 和1了 # clf = joblib.load("my_model.m") #取出保存的模型 #测试数据 oneX = dummyX[0,] # print oneX nnnn = oneX nnnn[1] = 0 nnnn[2] =1 # print nnnn predictedY = clf.predict([nnnn]) #这里注意了 传入的参数是个二维数组 print predictedY
sklearn 机器学习练习
最新推荐文章于 2024-06-18 05:49:15 发布