k近邻分析dataframe 方
时间: 2024-12-28 08:11:34 浏览: 6
### 使用Pandas DataFrame 实现 K 近邻 (KNN) 算法
为了在 Pandas DataFrame 中实现 k 近邻算法,可以按照如下方式操作:
#### 数据准备
首先确保数据已经加载到 pandas 的 `DataFrame` 结构中。假设有一个名为 `dataframe` 的变量保存着训练集以及另一个名为 `test_dataframe` 的变量用于测试。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, confusion_matrix
```
对于分类任务来说,需要分离特征列和目标列。这里假定最后一列为类别标签:
```python
X = dataframe.iloc[:, :-1].values # 特征矩阵
y = dataframe.iloc[:, -1].values # 类别向量
```
接着分割数据集为训练集和验证集以便后续评估模型性能:
```python
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
```
标准化处理有助于提高某些距离度量的效果,在此之前先实例化缩放器对象并应用fit_transform方法来调整数值范围:
```python
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_val = scaler.transform(X_val)
```
#### 创建与训练 KNN 模型
初始化 KNN 分类器并将参数传递给它;此处设定邻居数量 n_neighbors 和权重函数 weight :
```python
classifier = KNeighborsClassifier(n_neighbors=7, weights='distance')
classifier.fit(X_train, y_train)
```
#### 预测及评价
利用已训练好的模型对验证集做出预测,并通过混淆矩阵和其他指标衡量其表现:
```python
predictions = classifier.predict(X_val)
print(confusion_matrix(y_val,predictions))
print(classification_report(y_val,predictions))
```
如果希望直接基于原始的 `pandas.DataFrame` 而不是 NumPy 数组来进行上述过程,则可以在创建模型时省去 `.values` 属性调用[^1]。
阅读全文