Python机器学习之手写KNN算法预测城市空气质量

  • Post category:Python

Python机器学习之手写KNN算法预测城市空气质量

KNN算法是一种基于实例的学习方法,它可以用于分类和回归问题。在本攻略中,我们将手写一个KNN算法,并使用它来预测城市空气质量。本攻略包括以下步骤:

  1. 导入库
  2. 加载数据
  3. 数据预处理
  4. 定义KNN算法
  5. 使用KNN算法预测城市空气质量

步骤一:导入库

首先,我们需要导入NumPy和Pandas库。可以使用以下代码导入:

import numpy as np
import pandas as pd

步骤二:加载数据

接下来,我们需要加载数据。在本攻略中,我们将使用一个包含城市空气质量数据的CSV文件。可以使用以下代码加载数据:

data = pd.read_csv('city_air_quality.csv')

步骤三:数据预处理

在加载数据之后,我们需要对数据进行预处理。在本攻略中,我们将使用以下步骤进行数据预:

  1. 将数据集分为训练集和测试集
  2. 对数据进行标准化

下面是完整的代码:

# 将数据集分为训练集和测试集
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算法:

  1. 计算测试样本与每个训练样本间的距离
  2. 根据距离对训练样本进行排序
  3. 选择K个最近的训练样本
  4. 对K个最近的训练样本进行投票
  5. 返回投票结果

下面是完整的代码:

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预测城市空气质量。