sklearn 的基本机器学习(分类方法)

来源:互联网 发布:软件开发部职责 编辑:程序博客网 时间:2024/06/08 13:57

1.

KNN原理:

存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中最相似数据(最近邻)的分类标签。一般来说,只选择样本数据集中前k个最相似的数据,这就是KNN算法k 的出处, 通常 k 是不大于20的整数。最后,选择 k 个最相似数据中出现次数最多的分类,作为新数据的分类。


代码:

#-*-coding:utf-8 -*-from sklearn import datasets#导入内置数据集模块from sklearn.neighbors import KNeighborsClassifier#导入sklearn.neighbors模块中KNN类import numpy as npiris=datasets.load_iris()#导入鸢尾花的数据集,iris是一个数据集,内部有样本数据iris_x=iris.datairis_y=iris.targetindices = np.random.permutation(len(iris_x))#permutation接收一个数作为参数(150),产生一个0-149一维数组,只不过是随机打乱的iris_x_train = iris_x[indices[:-10]] #随机选取140个样本作为训练数据集iris_y_train = iris_y[indices[:-10]]# 并且选取这140个样本的标签作为训练数据集的标签iris_x_test = iris_x[indices[-10:]]# 剩下的10个样本作为测试数据集iris_y_test = iris_y[indices[-10:]]# 并且把剩下10个样本对应标签作为测试数据及的标签knn = KNeighborsClassifier()# 定义一个knn分类器对象knn.fit(iris_x_train, iris_y_train)# 调用该对象的训练方法,主要接收两个参数:训练数据集及其样本标签iris_y_predict = knn.predict(iris_x_test)# 调用该对象的测试方法,主要接收一个参数:测试数据集score = knn.score(iris_x_test, iris_y_test, sample_weight=None)# 调用该对象的打分方法,计算出准确率print('iris_y_predict = ')print(iris_y_predict)# 输出测试的结果print('iris_y_test = ')print(iris_y_test)# 输出原始测试数据集的正确标签,以方便对比print 'Accuracy:', score# 输出准确率计算结果

2.

SVM原理:

SVM既可以用来分类,就是SVC;又可以用来预测,或者成为回归,就是SVR


代码:

from sklearn import svmX = [[0, 0], [1, 1], [1, 0]]  # 训练样本y = [0, 1, 1]  # 训练目标clf = svm.SVC()  clf.fit(X, y)  # 训练SVC模型result = clf.predict([2, 2])  # 预测 测试样本print result  # 得出预测值

此外补充一个训练模型的加载与保存:

# 将训练好的模型保存到train_model.m中joblib.dump(clf, "train_model.m")# 模型的加载clf = joblib.load("train_model.m")
3.

集成方法 随机森林原理:

集成学习通过建立几个模型组合解决单一预测问题工作原理是生成多个分类器/模型,各自独立地学习作出预测这些预测最后结合预测因此优于任何一个单分类的做出预测随机森林是集成学习的一个子类.

代码:

#coding=utf-8from sklearn import datasetsfrom sklearn.ensemble import  RandomForestClassifier#应用iris数据集import numpy as npiris=datasets.load_iris()#导入鸢尾花的数据集,iris是一个数据集,内部有样本数据iris_x=iris.datairis_y=iris.targetindices = np.random.permutation(len(iris_x))#permutation接收一个数作为参数(150),产生一个0-149一维数组,只不过是随机打乱的x_train = iris_x[indices[:-10]] #随机选取140个样本作为训练数据集y_train = iris_y[indices[:-10]]# 并且选取这140个样本的标签作为训练数据集的标签x_test = iris_x[indices[-10:]]# 剩下的10个样本作为测试数据集y_test = iris_y[indices[-10:]]# 并且把剩下10个样本对应标签作为测试数据及的标签#分类器:自由森林clfs = {'random_forest' : RandomForestClassifier(n_estimators=50)}#构建分类器,训练样本,预测得分def try_different_method(clf):    clf.fit(x_train,y_train.ravel())    score = clf.score(x_test,y_test.ravel())    print('the score is :', score)for clf_key in clfs.keys():    print('the classifier is :',clf_key)    clf = clfs[clf_key]    try_different_method(clf)



阅读全文
0 0
原创粉丝点击