首页 > 编程语言 >线性回归-随机梯度法下降算法预测波士顿房价

线性回归-随机梯度法下降算法预测波士顿房价

时间:2024-10-13 12:22:59浏览次数:10  
标签:梯度 nan print 算法 train boston test 波士顿 数据

机器学习基本步骤:

​1.数据获取-导入外部数据集housing_price

数据获取: 听着高大上, 实际上就是把内部/外部数据集加载进来

2.数据基本处理-缺失值处理, 分割数据集,

数据基本处理:实际上就是对数据中缺失的数据和异常的数据进行处理, 然后进行数据集分割

3.特征工程-特征预处理,

 特征工程:听着高大上, 实际上就是对特征值进行的一系列处理

4.模型训练-使用梯度下降法进行线性回归,

机器学习/模型训练:听着高大上, 实际上就是选择合适的模型, 然后进行训练

5.模型评估-计算预测值,计算准确率, 计算均方误差MSE,

 模型评估:听着高大上, 实际上就是对模型的预测结果和评价指标进行一系列评估

# 1.数据获取-导入外部数据集housing_price,
import pandas as pd
boston=pd.read_csv(r"HousingData.csv")
print(boston)

# 2.数据基本处理-缺失值处理, 分割数据集,
# 2.1检查缺失值数量并删除存在缺失值的行
nan=boston.isna().sum()
print("nan:", nan)
if (~nan).any():
    print("删除中...")
    boston = boston.dropna()
nan=boston.isna().sum()
print("nan:", nan)
# 2.2将数据集分割成训练集特征值, 测试集特征值, 训练集目标值, 测试集目标值
from sklearn.model_selection import train_test_split
x_all= boston.loc[:,boston.columns!="MEDV"]   # x_all是指全体特征值, 包括测试集特征值和训练集特征值
y_all= boston.iloc[:,-1]   # .loc[]的用法, 能行吗? y_all是指全体目标值, 包括测试集目标值和训练集目标值
x_train, x_test,y_train,y_test  = train_test_split(x_all,y_all, test_size=0.2)

# 3.特征工程-特征预处理-各个特征值单位不一致, 进行标准化处理
from sklearn.preprocessing import StandardScaler
scaler=StandardScaler()
x_train=scaler.fit_transform(x_train)
x_test= scaler.fit_transform(x_test)

# 4.模型训练-使用梯度下降法进行线性回归,
from sklearn.linear_model import SGDRegressor
estimator= SGDRegressor(max_iter=1000,learning_rate='constant', eta0=0.001)
# 把学习率设置成常数: estimator= SGDRegressor(max_iter=1000,learning_rate='constant', eta0=0.001)
estimator.fit(x_train,y_train)

# 5.模型评估-计算预测值,计算准确率, 计算均方误差MSE,
# 计算预测值
y_predict=estimator.predict(x_test)
print("Y_predict is:", y_predict)
# 计算准确率
accu_score=estimator.score(x_test, y_test)
print("accuracy:",accu_score)
# 计算均方误差
from sklearn.metrics import mean_squared_error
MSE=mean_squared_error(y_test, y_predict)
print("mean_squared_error:", MSE)

# 扩展1
# 模型评估主要用于监督学习方便, 根据模型不同, 通常使用的评估指标也不同
# 1.分类模型: 准确率, 精确率, 召回率, F1-score, AUC指标
# 2.回归模型: 均方根误差, 相对平方误差, 平均绝对误差, 相绝对误差, 决定系数

# 扩展2
# pycharm中查询显示函数的快捷键有ctrl+p, ctrl+q

# 扩展3
# estimator->estimate->estim(词根), 意思是评估, 估计, 判断

# 扩张4
# loc[], iloc[], array[]的区别
# loc根据行/列名定位, 适合用于多列选择
# iloc根据列索行/引定位, 适合用于多列选择
# array[]根据行列名或者索引定位, 适用于要选择的列数较少的情况

数据集HousingData下载地址:

链接:https://pan.baidu.com/s/1uQiYeN5QYwIBAWj9LG1EgQ 
提取码:oem8

作者的唠叨

嘿嘿, 插几句话, 不吐不快啊, 

市面上的网盘太多了, 平时想要获取资源, 免不了要跟各种网盘打交道,

需要哪个大佬分享的资源, 就要下载大佬用来分享资源的网盘的app软件, 好烦啊

有没有什么办法, 不通过网盘客户端也能下载大型资源的方式啊?求求啊!

算了, 等着我, 早晚给它鼓捣出来

哦, 对了,

刚刚试了试,  迅雷网盘里面的磁力链接可以通过百度网盘进行下载

感觉百度网盘的会员还是挺良心的,内存够大,

但是你既然这么良心, 为什么不把会员的文件下载/上传的传输速度提上去呀

标签:梯度,nan,print,算法,train,boston,test,波士顿,数据
From: https://blog.csdn.net/JR521314/article/details/142895612

相关文章

  • 贪心算法案例 - 零钱兑换问题
    贪心算法案例-零钱兑换问题贪心算法原则:每一次都选取当前最优解《向前看,别回头》案例:(322.零钱兑换-力扣(LeetCode))题目描述:给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有......
  • 数字逻辑电路中的逻辑运算法则
    数字逻辑电路中的逻辑运算法则在数字逻辑电路中,逻辑运算是其核心。通过不同的逻辑运算,电路能够执行复杂的计算任务。本文将介绍几种基本的逻辑运算及其规则:与(AND)、或(OR)、非(NOT)、与非(NAND)、或非(NOR)、异或(XOR)和同或(XNOR),并结合C++和Verilog中的运算符号进行讲解。1.与(AND)运算与......
  • 数据结构与算法Python版p26-p28 无序表链表实现、有序表
    B站视频-数据结构与算法Python版无序表链表实现、有序表一、节点二、无序表三、有序表一、节点#节点classNode:def__init__(self,initdata):self.data=initdataself.next=NonedefgetData(self):returnself.data......
  • 算法||基于SSM的绿色食品推荐的设计与实现
    ......
  • 第108天:免杀对抗-Python&混淆算法&反序列化&打包生成器&Py2exe&Nuitka
    知识点#知识点:1、Python-对执行代码做文章2、Python-对shellcode做文章3、Python-对代码打包器做文章#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll反......
  • 机器学习主成分分析算法 PCA—python详细代码解析(sklearn)
    一、问题背景在进行数据分析时,我们常常会遇到这样的情况:各个特征变量之间存在较多的信息重叠,也就是相关性比较强。就好比在研究一个班级学生的学习情况时,可能会收集到学生的语文成绩、数学成绩、英语成绩等多个特征变量。但往往会发现,语文成绩好的学生,数学和英语成绩也可能比......
  • 107-免杀对抗-C&C++&溯源ShellCode上线&混淆变异算法&回调编译执行
    知识点#知识点:1、ShellCode-分析&朔源&感知2、ShellCode-混淆&编码&算法3、回调执行解析-API&汇编&句柄#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll......
  • YOLOv11全网最新创新点改进系列:一文读懂YOLOv11算法!!!
    YOLOv11全网最新创新点改进系列:免费送!!!改进且跑通的源码!!融入CBAM注意力,将通道注意力和空间注意力相结合,嘎嘎提升V11算法,叫叫首,改进速度遥遥领先,粉丝水文速度遥遥领先!!!所有改进代码均经过实验测试跑通!截止发稿时YOLOv11已改进40+!自己排列组合2-4种后,考虑位置不同后可排列组合......
  • Leetcode 贪心算法之 Container With Most Water
    题目描述给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例:输入:[1,8,6,2,5,4,8,3,7]输......
  • Leetcode 贪心算法之Jump Game II
    题目描述给定一个长度为n的0索引整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i+j]处:0<=j<=nums[i]i+j<n返回到达nums[n-1]的最小跳跃次数。生成的......