机器学习之路7

sklearn转换器和估计器

 

转换器

之前特征工程的步骤:

1 实例化(实例化的是一个转换器类(Transformer))

2 调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)

所以,对于我们数据预处理的标准化当中:

(x-mean)/std

fit_transform()

fit() :           是计算每一列的平均值

transform()  :       (x-mean)/std进行最终转换

预估器   

预估器是sklearn机器学习算法的实现。在sklearn中,预估器是一个重要的角色,是一类实现了算法的API

预估器的工作流程:

机器学习之路7_第1张图片

预估器的使用:

1 实例化一个estimator

2 estimator.fit(x_train(训练集的特征值),y_train(训练集的目标值)) 计算并生产模型

3 模型评估:
         (1)  直接比对真实值和预测值

                   y_predict = estimator.predict(x_test)

                  y_test == y_predict

         (2)  计算准确率

                   score = estimator.score(x_test,y_test)

K--近邻算法

k Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面的一个比较经典的算法,总体来说KNN算法是相对比较容易理解的算法。

它的思想大致是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数都属于某一个类别,则该样本也属于这个类别。

两个样本的距离可以通过欧氏距离的公式来计算。也可以用曼哈顿距离,绝对值距离,名科夫斯基距离来计算。

KNN算法中K值如果取得过小,则容易受到异常点的影响,K值取得过大,则容易受到样本不均衡的影响。

所以,使用KNN算法时,需要对数据进行标准化处理。

使用KNN算法对鸢尾花数据集进行种类预测

代码:

#导入KNN算法的模块
from sklearn.neighbors import KNeighborsClassifier
def KNN_iris():
    '''
    用KNN算法对鸢尾花进行分类
    :return:
    '''
    #1 获取数据
    iris = load_iris()
    #2 划分数据集
    x_train,x_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=6)
    #3 特征工程:标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    #对训练集中的平均值和标准差来对测试集做标准化
    x_test = transfer.transform(x_test)
    #4 KNN算法预估器
    #k取3
    estimator = KNeighborsClassifier(n_neighbors=3)
    estimator.fit(x_train,y_train)
    #5 模型评估
    #方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n",y_predict)
    print("直接比对真实值和预测值:\n",y_test == y_predict)
    #方法2:计算准确率
    score = estimator.score(x_test,y_test)
    print("准确率为:\n",score)
    return None

输出:

机器学习之路7_第2张图片

KNN算法的优点:

简单,易于理解,易于实现,无需训练。

缺点:

对测试样本分类时的计算量大,内存开销大,必须指定K值,K值选取不当则分类精度不能保证。

使用场景:

小数据场景,几千----几万样本,具体场景具体业务去测试。

你可能感兴趣的:(机器学习,sklearn,人工智能)