Python机器学习之手写KNN算法预测城市空气质量
KNN算法是一种基于实例的学习方法,它可以用于分类和回归问题。在本攻略中,我们将手写一个KNN算法,并使用它来预测城市空气质量。本攻略包括以下步骤:
- 导入库
- 加载数据
- 数据预处理
- 定义KNN算法
- 使用KNN算法预测城市空气质量
步骤一:导入库
首先,我们需要导入NumPy和Pandas库。可以使用以下代码导入:
import numpy as np
import pandas as pd
步骤二:加载数据
接下来,我们需要加载数据。在本攻略中,我们将使用一个包含城市空气质量数据的CSV文件。可以使用以下代码加载数据:
data = pd.read_csv('city_air_quality.csv')
步骤三:数据预处理
在加载数据之后,我们需要对数据进行预处理。在本攻略中,我们将使用以下步骤进行数据预:
- 将数据集分为训练集和测试集
- 对数据进行标准化
下面是完整的代码:
# 将数据集分为训练集和测试集
from sklearn.model_selection import train_test_split
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 对数据进行标准化
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
在上面的代码中,我们使用train_test_split函数将数据集分为训练集和测试集。我们还使用StandardScaler类对进行标准化。
步骤四:定义KNN算法
接下来,我们需要定义KNN算法。在本攻略中,我们将使用以下步骤定义KNN算法:
- 计算测试样本与每个训练样本间的距离
- 根据距离对训练样本进行排序
- 选择K个最近的训练样本
- 对K个最近的训练样本进行投票
- 返回投票结果
下面是完整的代码:
def knn(X_train, y_train, X_test, k):
distances = []
for i in range(len(X_train)):
distance = np.sqrt(np.sum(np.square(X_test - X_train[i, :])))
distances.append([distance, i])
distances = sorted(distances)
targets = []
for i in range(k):
index = distances[i][1]
targets.append(y_train[index])
return Counter(targets).most_common(1)[0][0]
在上面的代码中,我们定义了一个名为knn的函数,它接受训练集、训练集标、测试集和K值作为输入。该函数计算测试样本与每个训练样本之间的距离,并根据距离对训练样本进行排序。然后,它选择K个最近的训练样本,并对它进行投票。最后,该函数返回投票结果。
步骤五:使用KNN算法预测城市空气质量
现在,我们已经定义了KNN算法,可以使用它来预测城市空气质量。下面是完整的代码:
from collections import Counter
# 预测测试集
y_pred = []
for i in range(len(X_test)):
y_pred.append(knn(X_train, y_train, X_test[i, :], k=5))
# 计算准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
在上面的代码中,我们使用knn函数预测测试集,并使用accuracy_score函数计算准确率。
示例一:使用K=3预测城市空气质量
from collections import Counter
# 预测测试集
y_pred = []
for i in range(len(X_test)):
y_pred.append(knn(X_train, y_train, X_test[i, :], k=3))
# 计算准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
在上面的代码中,我们使用K=3预测城市空气质量,并计算准确率。
示例二:使用K=7预测城市空气质量
from collections import Counter
# 预测测试集
y_pred = []
for i in range(len(X_test)):
y_pred.append(knn(X_train, y_train, X_test[i, :], k=7))
# 计算准确率
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
在上面的代码中,我们使用K=7预测城市空气质量,并计算准确率。
总结
本攻略演示了如何手写KNN算法,并使用它来预测城市空气质量。我们还提供了两个示例,分别使用K=3和K=7预测城市空气质量。