在学完机器学习实验这门课以后,认识了这个sklearn(一个机器学习专门的学习库):
scikit-learn(简称sklearn)是一个基于Python编程语言的机器学习库。它提供了广泛的机器学习算法和工具,包括分类、回归、聚类、降维、模型选择等。scikit-learn被设计成非常易于使用和扩展的工具,它支持包括NumPy和SciPy等在内的Python科学计算库,并且提供了许多示例和文档来帮助用户入门和理解各种机器学习算法的原理和应用。scikit-learn是机器学习领域中最受欢迎的库之一,并且在学术界和工业界都得到了广泛使用。
然后中做了一下自己实验课的实验:
数据准备: 搜集数据、划分训练集、测试集; 设计模型,在训练集学习模型参数;找到最佳的系数; 在测试集用使用训练好的模型做出预测;分析结果、评价算法的性能。
1)必做题:线性回归;
2)选做题:逻辑回归、线性判别分析。
具体实验如下: 建立房价预测模型。利用singleFeature.txt(单特征)和mulFeatures.txt(多特征)中的数据,进行线性回归和预测。
1)单特征线性回归 下载数据集singleFeature.txt,完成一元线性回归y=ax+b。根据数据集是否分割为训练集和测试集,实现下面两种方案。 方案一:所有样本都用来训练和预测。 方案二:一部分样本用来训练,一部分用来检验模型。
2)多特征线性回归 下载数据集mulFeatures.txt,其中每个样本包括2个特征,作一个二元线性回归y=a1x1+a2x2+b,且所有样本都用来训练和预测。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
x=[]
y=[]
a=[]
f=open("E:\python实战学习\实验二数据集 (1)\singleFeature.txt",'r') # 打开文件
ss=f.readlines() # 逐行读取文件内容
l=len(ss) # 获取文件行数
for i in range(l):
s=ss[i] # 获取第i行的内容
s=s.strip('\n') # 去掉行尾的换行符
a=s.split(',') # 将内容按逗号分割为列表
for j in range(2):
a[j]=float(a[j]) # 将列表中的字符串元素转换为浮点数
x.append(a[0]) # 将第一个元素添加到x列表
y.append(a[1]) # 将第二个元素添加到y列表
plt.scatter(x,y,c='blue') # 绘制散点图
plt.xlabel('x') # 设置x轴标签
plt.ylabel('y') # 设置y轴标签
x=np.array(x).reshape(-1,1) # 将x列表转换为NumPy数组并改变形状为一列
y=np.array(y).reshape(-1,1) # 将y列表转换为NumPy数组并改变形状为一列
lr_model=LinearRegression() # 创建线性回归模型的实例
lr_model.fit(x,y) # 使用x和y进行模型拟合
a=lr_model.coef_ # 获取模型的系数
b=lr_model.intercept_ # 获取模型的截距
aa=a[0] # 获取系数的数值
print(a,b) # 输出系数和截距的值
yy = lr_model.predict(x) # 使用模型预测y值
plt.plot(x,yy,c='red') # 绘制拟合曲线
plt.show() # 显示图形
代码很简单简洁,但是这些都是直接调用,没有真正学习到西瓜书的内涵,我觉得还是按照课本自己做一下试验,会收获更多。上边这些都是现成的东西。