DecisionTree与K近邻预测鸢尾花类型

 使用决策树Decision Tree和K近邻分别对鸢尾花数据进行预测,只需要修改分类器部分的代码,如下面决策树分类器的代码:

from sklearn import tree
my_classifier=tree.DecisionTreeClassifier()

换成K近邻的代码:

from sklearn import neighbors
my_classifier=neighbors.KNeighborsClassifier(n_neighbors=2)
from sklearn import datasets
iris=datasets.load_iris() #鸢尾花数据集
x=iris.data#feature
y=iris.target#labels

#将数据集划分成训练集和测试集split into train/test
from sklearn.model_selection import train_test_split  #新的模块sklearn.model_selection,将以前的sklearn.cross_validation, sklearn.grid_search 和 sklearn.learning_curve模块组合到一起https://blog.csdn.net/qi_1221/article/details/76071555
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.5)#总共150个样本,即训练预测集各自75个样本。

#train a classifier训练一个分类器
def train(clf,features,labels):
    return clf.fit(features,labels)

#预测数据predict labels for unseen data
def predict(clf,features):
    return clf.predict(features)

#调用决策树分类器1
# from sklearn import tree
# my_classifier=tree.DecisionTreeClassifier()
#调用K近邻分类器2
from sklearn import neighbors
my_classifier=neighbors.KNeighborsClassifier(n_neighbors=2)


#训练分类器
my_classifier=train(my_classifier,x_train,y_train)
#预测
predictions=predict(my_classifier,x_test)
#计算正确率calculate our accuracy
from sklearn.metrics import accuracy_score
print(accuracy_score(y_test,predictions)) #0.9733333333333334

 由于划分是随机性的,所以每次训练和测试的数据各不相同,最后的预测准确率各有不同。

可以更改代码,使得分类器每次的测试结果一样,可以将上面的第8行代码更改如下:

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.5,random_state=42)

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/82956416