import xlrd
import numpy as np
from openpyxl import load_workbook
from sklearn.neighbors import KNeighborsRegressor
import matplotlib.pyplot as plt
wb = load_workbook(filename=r'D:\pyreadexcel\predictPM25wet.xlsx')
##读取名字为Sheet1的sheet表
table = wb.get_sheet_by_name("Sheet1")
arr1 = []
arr2 = []
## 遍历第2行到10000行
for row_A in range(2, 296):
## 遍历第2行到10000行,第1列
a1 = table.cell(row=row_A, column=1).value
## 遍历第2行到10000行,第3列
a2 = table.cell(row=row_A, column=2).value
if a1:
# 写入数组1
arr1.append([a1])
if a2:
# 写入数组2
arr2.append(a2)
#arr1 = np.transpose(arr1)
#X = np.transpose(X)
#使用KNN算法进行回归拟合
#选取最近的5个样本决定这个事物属于哪类
k = 5
knn = KNeighborsRegressor(k)
#使用X作为训练数据并将y作为目标值来拟合模型
knn.fit(arr1, arr2);
# 生成足够密集的点并进行预测
#生成了一个一维500个数字的数组[:,np.newaxis]将数组转成500行1列的矩阵
T = np.linspace(0, 180, 1000000)[:, np.newaxis]
y_pred = knn.predict(T)
knn.score(arr1, arr2)
# 画出拟合曲线
#画图之前首先设置figure对象,此函数相当于设置一块自定义大小的画布,
# 使得后面的图形输出在这块规定了大小的画布上,其中参数figsize设置画布大小 dpi每英寸点数
plt.figure(figsize=(16, 10), dpi=144)
plt.scatter(arr1, arr2, c='g', label='data', s=100) # 画出训练样本
plt.plot(T, y_pred, c='k', label='prediction', lw=4) # 画出拟合曲线
plt.axis('tight')
plt.title("KNeighborsRegressor (k = %i)" % k)
plt.show()
KNN结合项目.zip_KNN 分类_knn matlab_matlab
版权申诉
73 浏览量
2022-09-21
01:00:58
上传
评论
收藏 1KB ZIP 举报
寒泊
- 粉丝: 75
- 资源: 1万+
最新资源
- Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程
- 卸载软件geek卸载软件geek
- Python 程序语言设计模式思路-创建型模式:单例模式,确保一个类的唯一实例(装饰器)面向对象编程、继承
- skywalking-plugins.jar skywalking-alarm.jar
- 独栋别墅图纸D020-两层-10.00&11.00米- 施工图.dwg
- Python 程序语言设计模式思路-创建型模式:工厂模式,创建对象的统一接口,封装对象的创建逻辑
- python自学教程-05-json数据格式的介绍.ev4.rar
- python自学教程-04-自定义JavaScript.ev4.rar
- 《淘宝后台系统...》
- skywalking-plugins.jar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈