import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsRegressor from sklearn.preprocessing import StandardScaler # 读取CSV文件 data = pd.read_csv("D:/Salary_data.csv") # 去除缺失值 data.dropna(inplace=True) # 将分类变量转换为虚拟变量 data = pd.get_dummies(data) # 将特征和目标变量分开 X = data.drop('Salary', axis=1) y = data['Salary'] # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 标准化特征 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 创建KNN回归器 knn = KNeighborsRegressor(n_neighbors=5) # 在训练集上拟合模型 knn.fit(X_train, y_train) # 在测试集上评估模型 score = knn.score(X_test, y_test) print("R-squared score:", score) R-squared score: 0.6441725303407546 绘制可视化
时间: 2024-03-20 09:42:09 浏览: 139
pd_split_train_test.rar_pandas_pandas对数据分类_pd.split_split_数据分类
好的,根据您提供的R-squared score为0.6441725303407546,您可以绘制一张散点图来可视化模型的预测结果和实际结果之间的关系。以下是示例代码:
```python
import matplotlib.pyplot as plt
# 在测试集上进行预测
y_pred = knn.predict(X_test)
# 绘制散点图
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Salary")
plt.ylabel("Predicted Salary")
plt.title("KNN Regression - Actual vs. Predicted Salary")
# 绘制一条直线表示完美预测的情况
min_val = min(y_test.min(), y_pred.min())
max_val = max(y_test.max(), y_pred.max())
plt.plot([min_val, max_val], [min_val, max_val], '--', color='red')
plt.show()
```
这段代码将生成一个散点图,其中x轴表示实际薪资,y轴表示预测薪资,红色虚线表示完美预测的情况。您可以根据需要自定义图表的样式和布局。
阅读全文