机器学习之kNN算法

古人云:“近朱者赤,近墨者黑”。其实机器学习中的kNN算法的核心思想就是这句流传至今的名言。kNN算法又称为K近邻算法,是众多机器学习算法中少有的懒惰学习算法,该算法不仅可以用来回归也可以用来分类。
本实训将带你学习kNN算法的基本原理、怎样使用sklearn中实现的kNN算法来对数据进行分类与回归。最后,将带你学习如何使用kNN算法解决实际问题-红酒分类。

使用sklearn中的kNN算法进行分类

from sklearn.neighbors import KNeighborsClassifier

def classification(train_feature, train_label, test_feature):
    '''
    使用KNeighborsClassifier对test_feature进行分类
    :param train_feature: 训练集数据
    :param train_label: 训练集标签
    :param test_feature: 测试集数据
    :return: 测试集预测结果
    '''

    #********* Begin *********#
    clf=KNeighborsClassifier()
    clf.fit(train_feature, train_label) 
    return clf.predict(test_feature)
    #********* End *********#

使用sklearn中的kNN算法进行回归

from sklearn.neighbors import KNeighborsRegressor

def regression(train_feature, train_label, test_feature):
    '''
    使用KNeighborsRegressor对test_feature进行分类
    :param train_feature: 训练集数据
    :param train_label: 训练集标签
    :param test_feature: 测试集数据
    :return: 测试集预测结果
    '''

    #********* Begin *********#
    clf=KNeighborsRegressor() #生成K近邻分类器
    clf.fit(train_feature, train_label)               #训练分类器
    return clf.predict(test_feature)
    #********* End *********#

分析红酒数据

import numpy as np

def alcohol_mean(data):
    '''
    返回红酒数据中红酒的酒精平均含量
    :param data: 红酒数据对象
    :return: 酒精平均含量,类型为float
    '''

    #********* Begin *********#
    return data.data[:,0].mean()
    #********* End **********#

对数据进行标准化

from sklearn.preprocessing import StandardScaler

def scaler(data):
    '''
    返回标准化后的红酒数据
    :param data: 红酒数据对象
    :return: 标准化后的红酒数据,类型为ndarray
    '''

    #********* Begin *********#
    scaler = StandardScaler()
    after_scaler = scaler.fit_transform(data['data'])
    return after_scaler
    #********* End **********#

使用kNN算法进行预测

from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler

def classification(train_feature, train_label, test_feature):
    '''
    对test_feature进行红酒分类
    :param train_feature: 训练集数据,类型为ndarray
    :param train_label: 训练集标签,类型为ndarray
    :param test_feature: 测试集数据,类型为ndarray
    :return: 测试集数据的分类结果
    '''

    #********* Begin *********#
    scaler = StandardScaler()
    train_feature = scaler.fit_transform(train_feature)
    test_feature = scaler.transform(test_feature)

    clf = KNeighborsClassifier()
    clf.fit(train_feature, train_label)
    return clf.predict(test_feature)
    #********* End **********#

感谢大家的支持!!!!!

你可能感兴趣的:(机器学习,python)