各位读者大家好!在本文中,我们将重点关注Python 中KNN 的理解和实现。
那么,让我们开始吧!
什么是KNN算法?
KNN 是 K 最近邻的缩写。它是一种有监督的机器学习算法。KNN 基本上用于分类和回归。
KNN 不假设任何底层参数,即它是一种non-parametric
算法。
KNN 算法遵循的步骤
- 它最初将训练数据存储到环境中。
- 当我们拿出用于预测的数据时,Knn根据训练数据集为新的测试记录选择k 个最相似/相似的数据值。
- 此外,使用 来选择新测试点的 k 个最相似的邻居
Euclidean or Manhattan distance
。基本上,他们计算测试点和训练数据值之间的距离,然后选择 K 个最近邻点。 - 最后,将测试数据值分配给包含测试数据的 K 个最近邻的最大点的类或组。
K-NN 的现实例子
问题陈述 –考虑一袋有两种颜色的珠子(训练数据)——绿色和蓝色。
所以,这里有两个类:绿色和蓝色。我们的任务是找出新的珠子“Z”属于哪一类。
解决方案 –最初,我们随机选择 K 的值。现在假设 K=4。因此,KNN 将计算 Z 与所有训练数据值(一袋珠子)的距离。
此外,我们选择与 Z 最接近的 4(K) 个值,然后尝试分析 4 个邻居中的大多数属于哪个类。
最后,Z 被分配为空间中大多数邻居的类别。
KNN在Python中的实现
现在,让我们尝试实现 KNN 的概念来解决以下回归问题。
我们获得了一个数据集,其中包含根据各种环境条件选择租用自行车的人数的历史数据。
您可以在此处找到数据集。
那么,让我们开始吧!
1.加载数据集
我们利用Pandas 模块使用函数将数据集加载到环境中pandas.read_csv()
。
import pandas BIKE = pandas.read_csv( "Bike.csv" ) |
2. 选择正确的功能
我们利用相关回归分析技术从数据集中选择重要变量。
corr_matrix = BIKE.loc[:,numeric_col].corr() print (corr_matrix) |
相关矩阵
temp atemp hum windspeed temp 1.000000 0.991738 0.114191 - 0.140169 atemp 0.991738 1.000000 0.126587 - 0.166038 hum 0.114191 0.126587 1.000000 - 0.204496 windspeed - 0.140169 - 0.166038 - 0.204496 1.000000 |
由于“temp”和“atemp”高度相关,我们从数据集中删除“atemp”。
BIKE = BIKE.drop([ 'atemp' ],axis = 1 ) |
3. 分割数据集
我们利用train_test_split() 函数将数据集分为 80% 的训练数据集和 20% 的测试数据集。
#Separating the dependent and independent data variables into two data frames. from sklearn.model_selection import train_test_split X = bike.drop([ 'cnt' ],axis = 1 ) Y = bike[ 'cnt' ] # Splitting the dataset into 80% training data and 20% testing data. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = . 20 , random_state = 0 ) |
4. 定义错误指标
由于这是一个回归问题,我们将MAPE定义为误差指标,如下所示 –
import numpy as np def MAPE(Y_actual,Y_Predicted): mape = np.mean(np. abs ((Y_actual - Y_Predicted) / Y_actual)) * 100 return Mape |
5. 构建模型
实现 Knn 的sklearn.neighbors module
contains方法如下所示 –KNeighborsRegressor()
#Building the KNN Model on our dataset from sklearn.neighbors import KNeighborsRegressor KNN_model = KNeighborsRegressor(n_neighbors = 3 ).fit(X_train,Y_train) |
此外,我们使用predict()函数预测测试数据。
KNN_predict = KNN_model.predict(X_test) #Predictions on Testing data |
6. 准确性检查!
我们调用上面定义的 MAPE 函数来检查错误分类错误并判断模型预测的准确性。
# Using MAPE error metrics to check for the error rate and accuracy level KNN_MAPE = MAPE(Y_test,KNN_predict) Accuracy_KNN = 100 - KNN_MAPE print ( "MAPE: " ,KNN_MAPE) print ( 'Accuracy of KNN model: {:0.2f}%.' . format (Accuracy_KNN)) |
Knn的精度评估–
MAPE: 17.443668778014253 Accuracy of KNN model: 82.56 % . |
结论
至此,我们这个话题就结束了。如果您遇到任何问题,请随时在下面发表评论。
有关更多与 Python 相关的此类帖子,请继续关注,直到那时,快乐学习!🙂