下面是详细讲解“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近邻法进行分类和回归。