总结机器学习部分计算原理—续

  首先补充一下关于数据集的几点内容,在上次博客之后做的练习中,我发现了关于数据集中一些比较重要却被我忽视的内容。

  1、划分数据集。对于机器学习来说,不能将所有的数据都用来进行训练,这是因为倘若将所有的数据都用来训练,然后训练完毕后的模型直接去进行预测等工作,这样很难判断训练模型究竟好不好,是不是能比较准确的进行工程实践。所以,必须将数据集划分成训练集和测试集。当然一般来说,训练集会多一些,测试集会占到10%~30%。

  划分数据集的代码如下:

from sklearn.model_selection import train_test_split

# 以鸢尾花集来举例子
# 划分数据集
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=30)
    

   train_test_split方法参数输入顺序是:数据集的特征值,数据集的标签值。然后是一些默认参数,比较重要的就是random_state,不同的随机数种子会造成不同的随机采样结果。最后比较重要的就是train_test_split方法的返回值,返回数据顺序是:训练集特征值,测试集特征值,训练集目标值,测试集目标值,简称训特、测特、训目、测目,一般表示为x_train,y_train,x_test,y_test。

  2、K-近邻算法,非常非常基础的机器学习算法之一,又叫KNN(K Nearest Neighbors)算法,K是自己规定的常数,K-近邻算法的核心思想就是“找近的”,距离是衡量关系的最重要因素。在n个样本点中,选出距离要测试的样本点最近的K个样本,再选取这K个样本中标签相同数量最多的样本的标签,这个标签就是测试点的标签。所以,K值的选取是很重要的因素,K值不能取1,因为如果正好取到离得最近的“坏点”,预测就会错误;K值也不能取得太大,因为相同标签的数量多,但对于样本的标签来说不一定是对的。下面附上鸢尾花集的K-近邻算法。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier


# 使用K-近邻算法
def KNN_iris():
    # 获取数据
    iris = load_iris()
    # 划分数据集
    x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,random_state=30)
    # 特征工程:标准化
    stand_trans = StandardScaler()
    x_train_standard = stand_trans.fit_transform(x_train)
    x_test_standard = stand_trans.transform(x_test)
    # K-近邻算法预估器
    estimator = KNeighborsClassifier(n_neighbors=5)
    estimator.fit(x_train_standard,y_train)
    # 模型评估
    # 1、直接比对真实值和预测值
    y_predict = estimator.predict(x_test_standard)
    print("直接作对比:",y_predict==y_test)
    # 2、计算准确率
    score = estimator.score(x_test_standard,y_test)
    print("计算准确率:",score)
    print("Iris's data:",iris.data)
    print("Iris's target:",iris.target)


if __name__ == '__main__':
    KNN_iris()

 

截图如下

总结机器学习部分计算原理—续

 

 

上一篇:深度学习04-keras实例iris数据集+模型保存调用及修改+在sklearn框架内使用Keras模型+交叉验证


下一篇:Iris_cookie和session