线性回归--波士顿房屋价格预测

news2024/11/22 23:35:33

一、波士顿房屋价格预测代码



import sys

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import  matplotlib.pyplot as plt
import matplotlib as mpt
from sklearn.model_selection import train_test_split

##加载数据
data=pd.read_csv('./datas/boston_housing.data', sep='\s+',header=None)

##数据预处理

##获取特征属性X和目标属性Y
X=data.iloc[:,:-1]
Y=data.iloc[:,-1]
print("X的形状:",X.shape)
##划分训练集和测试集
xtrain,xtest,ytrain,ytest=train_test_split(X,Y,test_size=0.3)

##构建模型
##fit_intercept是否需要截距项
linear=LinearRegression(fit_intercept=True)

##模型训练
linear.fit(xtrain,ytrain)
print("linear.coef_参数:",linear.coef_)##参数
print("linear.intercept_截距项:",linear.intercept_)##截距项

ypredict=linear.predict(xtest)##测试集的预测结果

print("linear.score(xtrain,ytrain):",linear.score(xtrain,ytrain))##训练集的score
print("linear.score(xtest,ytest):",linear.score(xtest,ytest))##测试机的score

y_train_hat=linear.predict(xtrain)##训练集的预测结果


##训练集
plt.figure(num='train')
plt.plot(range(len(xtrain)),ytrain,'r',label=u'train_true')
plt.plot(range(len(xtrain)),y_train_hat,'g',label=u'train_predict')
plt.legend(loc='upper right')

##测试集
plt.figure(num='test')
plt.plot(range(len(xtest)),ytest,'r',label=u'test_true')
plt.plot(range(len(xtest)),ypredict,'g',label=u'test_predict')
plt.legend(loc='upper right')
plt.show()



 

 

 

X的形状: (506, 13)
linear.coef_参数: [-7.71839713e-02  4.64518189e-02  7.07301749e-03  2.64903087e+00
 -1.67266345e+01  3.64469823e+00  1.13463385e-02 -1.35154936e+00
  2.50872813e-01 -1.01006435e-02 -1.00671453e+00  1.09409652e-02
 -5.28701629e-01]###与特征数量一致
linear.intercept_截距项: 35.79041808015673##x0=1
linear.score(xtrain,ytrain): 0.730889354480308
linear.score(xtest,ytest): 0.753610702915135

 

 

 二、波士顿房屋价格预测代码多项式



import sys

import pandas as pd
import numpy as np
from daal4py.sklearn.linear_model import Ridge
from sklearn.linear_model import LinearRegression, Lasso
import  matplotlib.pyplot as plt
import matplotlib as mpt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
import warnings

warnings.filterwarnings('ignore')


##加载数据
data=pd.read_csv('./datas/boston_housing.data', sep='\s+',header=None)

##数据预处理

##获取特征属性X和目标属性Y
X=data.iloc[:,:-1]
Y=data.iloc[:,-1]
print("X的形状:",X.shape)
##划分训练集和测试集
xtrain,xtest,ytrain,ytest=train_test_split(X,Y,test_size=0.3)
##特征工程--多项式扩展
"""
PolynomanalFeatures ##多项式扩展
degree=2,扩展的阶数
interaction_only=False,是否只保留交互项
include_bias=True,是否需要偏置项

"""


print(type(xtrain))
print(xtrain.shape)
print(xtest.shape)
print(xtest.iloc[0, :])

"""
X的形状: (506, 13)
<class 'pandas.core.frame.DataFrame'>
(354, 13)
(152, 13)
0       1.15172
1       0.00000
2       8.14000
3       0.00000
4       0.53800
5       5.70100
6      95.00000
7       3.78720
8       4.00000
9     307.00000
10     21.00000
11    358.77000
12     18.35000
Name: 33, dtype: float64


"""

poly=PolynomialFeatures(degree=2,interaction_only=True,include_bias=True)
poly2=PolynomialFeatures(degree=2,interaction_only=False,include_bias=True)
poly3=PolynomialFeatures(degree=2,interaction_only=True,include_bias=False)
"""
特征工程:--根据设置和数据集--->先确定模型结构
    poly=PolynomialFeatures(degree=2,interaction_only=True,include_bias=True)
    poly2=PolynomialFeatures(degree=2,interaction_only=False,include_bias=True)
    poly3=PolynomialFeatures(degree=2,interaction_only=True,include_bias=False)
fit:然后训练模型参数
fit_transform==>fit+transform
transform:在fit训练好的模型基础上,再进行具体的预测
"""
print(poly.fit(xtrain))#PolynomialFeatures(interaction_only=True)
print(poly.transform(xtrain).shape)##(354, 92)  (354, 13)--->(354, 92)
print(poly.fit_transform(xtrain).shape)#(354, 92)

print(poly2.fit(xtrain))#PolynomialFeatures()
print(poly2.transform(xtrain).shape)#(354, 105)  (354, 13)--->(354, 105)
print(poly2.fit_transform(xtrain).shape)#(354, 105)

print(poly3.fit(xtrain))#PolynomialFeatures(include_bias=False, interaction_only=True)
print(poly3.transform(xtrain).shape)#(354, 91)  (354, 13)--->(354, 91) 没有x0=1这一项
print(poly3.fit_transform(xtrain).shape)#(354, 91)

x_train_poly=poly.fit_transform(xtrain)###得到了xtrain的预测值
x_test_poly=poly.fit_transform(xtest)###得到了xtest的预测值
print(type(x_train_poly))#<class 'numpy.ndarray'>
print(x_train_poly.shape)#(354, 92)
print(x_test_poly.shape)#(152, 92)
print(len(x_test_poly[0]))#92


print("---"*30)
##构建模型
linear=LinearRegression(fit_intercept=True)
lasso=Lasso(alpha=0.1,fit_intercept=True)##截距项b l1正则
ridge=Ridge(alpha=0.1,fit_intercept=True)##截距项b l2正则
"""
fit_intercept :
布尔类型,初始为True。决定在这个模型中是否有intercept,即偏移量,即类似于线性函数y = w1x1 + w0 中的w0。 如果False则无。

normalize:
布尔类型,初始为False。如果fit_intercept设置为False,那这个参数就会被忽略。反之,设为True,则模型在回归之前,会对特征集X减去平均数并除以L2范式(没懂),理解为一种标准化的规则。如果设为了False,而你又想标准化特征集合,则需要使用 sklearn.preprocessing.StandardScaler类来进行预处理。

copy_X:
布尔类型,初始化为True。True则,特征集合不变,反之会被复写。

n_jobs:

The number of jobs to use for the computation

初始为None,表示用1个处理器计算;-1代表所有处理器,只用于多个目标集问题的提速和大型问题。


2.3 属性
coef_:权重矩阵,理解为线性函数y = w1x1 + w0 中的W1
intercept_ :偏移量,理解为线性函数y = w1x1 + w0 中的W0
rank_: 特征矩阵的秩
singular_:特征矩阵的奇异值
"""

# 模型训练--fit训练模型参数
linear.fit(x_train_poly, ytrain)
lasso.fit(x_train_poly, ytrain)
ridge.fit(x_train_poly, ytrain)
print("="*50)
print(linear.coef_.shape)#(92,)
print(linear.intercept_)#5079837304.813356
print(lasso.coef_.shape)#(92,)
print(lasso.intercept_)#14.25982398796421
print(ridge.coef_.shape)#(92,)
print(ridge.intercept_)#-89.7858279511164

print("预测测试集"*30)
y_test_hat = linear.predict(x_test_poly)
y_test_hat = lasso.predict(x_test_poly)
y_test_hat = ridge.predict(x_test_poly)
print("-" * 100)
print(linear.score(x_train_poly, ytrain))#0.9360376865166864
print(linear.score(x_test_poly, ytest))#0.7890885829295062
print(lasso.score(x_train_poly, ytrain))#0.9068616853860628
print(lasso.score(x_test_poly, ytest))#0.704444988710448
print(ridge.score(x_train_poly, ytrain))#0.9355470033459335
print(ridge.score(x_test_poly, ytest))#0.7943193832839427
y_train_hat = linear.predict(x_train_poly)
y_train_hat = lasso.predict(x_train_poly)
y_train_hat = ridge.predict(x_train_poly)
plt.figure(num="train")
plt.plot(range(len(xtrain)), ytrain, 'r', label=u'true')##ridge
plt.plot(range(len(xtrain)), y_train_hat, 'g', label=u'predict')
plt.legend(loc='upper right')

plt.title("train")
# plt.show()
plt.figure(num="test")
plt.plot(range(len(xtest)), ytest, 'r', label=u'true')##ridge
plt.plot(range(len(xtest)), y_test_hat, 'g', label=u'predict')
plt.legend(loc='upper right')
plt.title("test")
plt.show()

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Druid工作原理

Druid工作原理-连接池初始化流程 标题 Druid工作原理-获取连接流程&#xff1a; 连接回收:

类定义练习

运行代码&#xff1a; //类定义练习 #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h" //定义类 class Person { private:string first_n…

直流有刷驱动板电流电压采集

直流有刷驱动板电流电压采集 电流采集会涉及到电流环的使用。 #include "./adc/bsp_adc.h" #include ".\motor_control\bsp_motor_control.h" #include "./led/bsp_led.h" #include "./usart/bsp_debug_usart.h"__IO uint16_t…

vue-element-admin深入系列-数据Mock

本文介绍 vue-element-admin 如何使用 MockJS 实现数据Mock,毕竟对于一个合格的前端来讲,自己能Mock数据是必须的: 自给自足,不用依赖服务端接口。毕竟环境问题是个大问题,更何况环境不稳定是常态,再加上偶尔服务端的数据格式变化,问题就更复杂。 数据复杂,页面复杂时。…

HackTheBox - 学院【CPTS】复习6 - Active Directory

ACTIVE DIRECTORY ENUMERATION & ATTACKS 这个模块其实与thm的AD教程相比&#xff0c;还是thm更适合刚开始接触AD以及学习从枚举到持久化的全阶段&#xff08;红队&#xff09;。而htb学院这个模块更注重于枚举和各种攻击手段&#xff0c;有点纯渗透的风格&#xff0c;弱化…

通过动态IP解决网络数据采集问题

动态地址的作用 说到Python网络爬虫&#xff0c;很多人都会遇到困难。最常见的就是爬取过程中IP地址被屏蔽。虽然大部分都是几个小时内自动解封的&#xff0c;但这对于分秒必争的python网络爬虫来说&#xff0c;是一个关键性的打击&#xff01;当一个爬虫被阻塞时&#xff0c;…

Java内部类笔记

1.为什么使用内部类? 使用内部类最吸引人的原因是&#xff1a;每个内部类都能独立地继承一个&#xff08;接口的&#xff09;实现&#xff0c;所以无论外围类是否已经继承了某个&#xff08;接口的&#xff09;实现&#xff0c; 对于内部类都没有影响 1.1.使用内部类最大的优点…

TCP/IP基础知识笔记

应用层&#xff1a;为用户提供应用功能&#xff0c;比如 HTTP、FTP、Telnet、DNS、SMTP等。 应用层是工作在操作系统中的用户态&#xff0c;传输层及以下则工作在内核态。 传输层&#xff1a;为应用层提供网络支持。 *TCP包含众多特性比如流量控制、超时重传、拥塞控制等因此可…

pytorch深度学习逻辑回归 logistic regression

# logistic regression 二分类 # 导入pytorch 和 torchvision import numpy as np import torch import torchvision from torch.autograd import Variable import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import matplotlib.pyplot as …

(简单)剑指Offer II 056. 二叉搜索树中两个节点的和 Java

方法一&#xff1a;深度优先搜索哈希表 使用深度优先搜索的方式遍历整棵树&#xff0c;用哈希表记录遍历过的节点的值 对于一个值为x的节点&#xff0c;检查哈希表中是否存在k-x即可。如果存在对应的元素&#xff0c;那么我们就可以在该树上找到两个节点的和为k&#xff1b;否…

河流垃圾检测Y8S

【免费】河流垃圾检测Y8M&#xff0c;只需要OPENCV资源-CSDN文库 采用YOLOV8训练&#xff0c;得到PT模型&#xff0c;然后直接转ONNX&#xff0c;使用OPENCV的DNN&#xff0c;不需要其他依赖&#xff0c;支持C/PYTHON

Hadoop 之 分布式集群配置与使用(三)

Hadoop 之 分布式集群 一.集群实例创建二.配置1.创建三个虚拟机&#xff08;Anolis&#xff09;1.修改 HostName2.配置免密登录&#xff0c;配置前 2.配置命名节点1.在 nd1 / nd2 部署 hadoop2.配置 3.查看集群信息 三.测试 一.集群实例创建 以三个 Hadoop 实例创建集群&#…

对战五子棋——网页版

目录 一、项目简介 二、用户模块 1、创建用户实体类 2、编写userMapper接口文件 3、实现userMapper.xml文件 4、对用户密码进行加密 5、实现用户登录功能 6、实现用户注册功能 三、实现用户匹配模块 1、展示用户个人信息 2、匹配请求类 3、匹配响应类 4、创…

郭东白的架构课学习笔笔记(1)

1.架构师的品质 自信和勇气&#xff08;正确的废话&#xff09;拥有战略意图&#xff0c;所谓战略意图&#xff0c;就是拥有与其资源和能力极不相称的雄心壮志。使用演绎法寻找架构原理&#xff0c;而不是归纳法。 2.如何提升自己的架构能力 向身边比自己厉害的优秀架构师或…

【网络安全带你练爬虫-100练】第14练:文件内容的读取、取出

目录 一、目标1&#xff1a;把文件内容遍历取出 二、目标2&#xff1a;把文件内容全部取出 三、网络安全O 一、目标1&#xff1a;把文件内容遍历取出 &#xff08;1&#xff09;如果文件脚本在不同目录 file_path "path/to/your/file.txt" # 替换为你的文件路径…

【Gradle】Gradle之JVM进程详解

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

【机密计算组织】机密计算联盟

一、简介 1.1 机密计算联盟与成员 2019年8月22日&#xff0c;Linux基金会宣布多家巨头企业组建“机密计算联盟”&#xff08;Confidential Computing Consortium&#xff09;&#xff0c;该基金将负责对联盟活动进行监督。机密计算联盟专门针对云服务及硬件生态&#xff0c;致…

SpringBoot中注入ServletFilterListener

1.基本介绍 文档&#xff1a;SpringBoot中注入Servlet&Filter&Listener 考虑到实际开发业务非常复杂和兼容问题&#xff0c;SpringBoot支持将Servlet、Filter、Listener注入spring容器中&#xff0c;成为Spring Bean也就是说&#xff0c;SpringBoot开放了和原生WEB组件…

关于初识MySQL数据库以及MySQL的基本使用

文章目录 什么是数据库什么是MySQL为什么要有数据库 MySQL基本使用连接mysql查看当前服务器对应的数据库创建数据库进入某个数据库建立一张表向表中插入数据查询表中的数据 服务器&#xff0c;数据库&#xff0c;表之间的关系数据逻辑存储MySQL架构SQL语句分类存储引擎 什么是数…

vue-cesium的基本使用【一】

最近的项目中用到了cesium,也了解了一点关于cesium的知识&#xff0c;打点、 标绘、等等基础的功能点&#xff0c;但是在开发过程中使用原生的cesium编写对于初学者还是有点难度&#xff0c;为此&#xff0c;找到关于对cesium进行二次封装的开源项目vue-cesium,本次文章主要记录…