python机器学习理论与实战(一)K近邻法

  • Post category:Python

下面是详细讲解“python机器学习理论与实战(一)K近邻法”的完整攻略。

1. 什么是K近邻法?

K邻法是一种基于实例的学习方法,它通过计算新样本与训练集中所有样本的距离,选取距离近的K个样本,然后根据这K个样本的标签进行分类或回归。K近邻法的优点是简单易懂,缺点是计算量大,对于高维数据集效果不佳。

2. K近邻法的实现

以下是使用Python实现K近邻法的示例,包括数据预处理、模型训练和预测过程。

2.1 数据预处理

首先,需要对数据进行预处理,包括数据清洗、特征选择、特征缩放等。以下是一个简单的数据预示例,使用Iris数据集进行训练和测试。

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

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

2.2 模型训练

接下来,需要训练K近邻模型。以下是一个简单的K近邻模型训练示例,使用sklearn库中的KNeighborsClassifier类。

from sklearn.neighbors import KNeighborsClassifier

# 创建K近邻模型
model = KNeighborsClassifier(n_neighbors=3)

# 训练模型
model.fit(X_train, y_train)

2.3 预测过程

最后,需要使用训练好的模型进行预测。以下是一个简单的预测示例,使用sklearn库中的predict方法。

# 预测结果
y_pred = model.predict(X_test)

# 计算准确率
accuracy = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)

3. 示例说明

以下是两个示例说明,分别是使用K近邻法进行分类和回归。

3.1 分类

以下是使用K近邻法进行分类的示例,使用Iris数据集进行训和测试。

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

# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建K近邻模型
model = KNeighborsClassifier(n_neighbors=3)

# 训练模型
model.fit(X_train,_train)

# 预测结果
y_pred = model.predict(X_test)

# 计算准确率
accuracy = np.mean(y_pred == y_test)
print('Accuracy:', accuracy)

输出结果为:

Accuracy: 1.0

3.2 回归

以下是使用K近邻法进行回归的示例,使用波士顿房价数据集进行训练和测试。

from sklearn.datasets import load_boston
from sklearn_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error

# 加载数据集
boston = load_boston()
X = boston.data
y = boston.target

# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建K近邻模型
model = KNeighborsRegressor(n_neighbors=3)

# 训练模型
model.fit(X_train, y_train)

# 预测结果
y_pred = model.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print('MSE:', mse)

输出结果为:

MSE: 27.

4. 总结

K近邻法是一种基于实例的学习方法,它通过计算新样本与训练集中所有样本的距离,选取距离最近的K个样本,然后根据这K样本的标签进行分类或回归。本文介绍了如何使用Python实现K近邻法,包括数据预处理、模型训练和预测过程。同时,本文还提供了两个示例说明,分别是使用K近邻法进行分类和回归。