boston房价预测--机器学习Boston数据分析

news2024/11/22 16:33:42

1.采用散点图绘制相关性。

#分析波士顿房价数据集的数据相关性
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#载入数据集  
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
boston = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
target = raw_df.values[1::2, 2]
x = boston 
y = target
plt.scatter(x[:, 5], y)
plt.show()

68eccb041b0a469888d27997bc5c2cea.png

2.输出出数据结构

print (u'形状:', x.shape)  
print (x[:10])  

47fc9128a3a54e1ead7c00d9515a7d3c.png

3.PCA

#PCA降维  
from sklearn.decomposition import PCA  
pca = PCA(n_components=2)
newData = pca.fit_transform(x) 
print (u'降维后数据:')  
print (newData[:4])  
print (u'形状:', newData.shape)  

4ebca571433547918057e565f147fac8.png

4.Lasso回归分析

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题
# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
# 导入 numpy 并重命名为 np。
import numpy as np
from sklearn.linear_model import Ridge,Lasso
X = boston
y = target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33, test_size=0.25)
# 分析回归目标值的差异。
print("The max target value is", np.max(target))
print("The min target value is", np.min(target)) 
print("The average target value is", np.mean(target))


# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import Normalizer
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
ss="StandardScaler"
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)
y_train = ss_y.fit_transform(y_train.reshape(-1, 1))

y_test = ss_y.transform(y_test.reshape(-1, 1))
# 从 sklearn.linear_model 导入 LinearRegression。
from sklearn.linear_model import LinearRegression
# 使用默认配置初始化线性回归器 LinearRegression。

def train_model():
    lr = LinearRegression()
    # 使用训练数据进行参数估计。
    lr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lr_y_predict = lr.predict(X_test)
    # 从 sklearn.linear_model 导入 SGDRegressor。
    from sklearn.linear_model import SGDRegressor
    # 使用默认配置初始化线性回归器 SGDRegressor。
    sgdr = SGDRegressor()
    # 使用训练数据进行参数估计。
    sgdr.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    sgdr_y_predict = sgdr.predict(X_test)
    ridge = Ridge(alpha=10)
    # 使用训练数据进行参数估计。
    ridge.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    ridge_y_predict = ridge.predict(X_test)
   # Lasso
    lasso = Lasso(alpha=0.01)
    # 使用训练数据进行参数估计。
    lasso.fit(X_train, y_train[:,0])
    # 对测试数据进行回归预测。
    lasso_y_predict = lasso.predict(X_test)
    
    return lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict
  


 
    #显示柱状图的高度文本
    for i in range(len(classes)):
        plt.text(r2s_x[i],model1[i], model1[i],va="bottom",ha="center",fontsize=8)
        plt.text(mess_x[i],model2[i], model2[i],va="bottom",ha="center",fontsize=8)
        #plt.text(nmse_x[i],model3[i], model3[i],va="bottom",ha="center",fontsize=8)
        #plt.text(mae_x[i],model4[i], model4[i],va="bottom",ha="center",fontsize=8)

 
    #显示图例
    plt.legend(loc="upper right")
    plt.show()

    #coding=gbk;
   
def plot_line(X,y,model,name):
   
    #--------------------------------------------------------------
    #z是我们生成的等差数列,用来画出线性模型的图形。
    z=np.linspace(0,50,200).reshape(-1,1)
    plt.scatter(y,ss_y.inverse_transform(model.predict(ss_X.transform(X)).reshape(len(X),-1)),c="orange",edgecolors='k')
    plt.plot(z,z,c="k")
    plt.xlabel('y')
    plt.ylabel("y_hat")
    plt.title(name)
    plt.show()
   

lr,sgdr,ridge,lasso,lr_y_predict,sgdr_y_predict,ridge_y_predict,lasso_y_predict=train_model()

models=[lr,sgdr]
r2s=[]
mess=[]
maes=[]
nmse=[]
results=[]
plot_line(X,y,lr,'LinearRegression+'+ss)
plot_line(X,y,sgdr,'SGDRegressor+'+ss)
#plot_line(X,y,lasso,'lasso'+ss)
#plot_line(X,y,ridge,'ridge'+ss)
print("sgdr_y_predict")
print(sgdr_y_predict)
        

    #evaluate(X_test,y_test,sgdr_y_predict,sgdr)
plot(results[0][1:4],results[1][1:4])
p=pd.DataFrame(result,columns=['波士顿房价预测值'])
p.to_csv('房价预测.csv')#波士顿房价预测值保存为csv文件

08e66b64b6ef4aeba4d991bf9a681148.png

0976b2bd903b4768be654c98afdc055b.png

e1b2acd1056f473ba5797b599956c1d3.png

 

 

 

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

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

相关文章

Java数据结构6-栈与队列

1. 栈(Stack) 1.1 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则 压栈…

第11章 规划过程组(11.5创建WBS)

第11章 规划过程组(一)11.5创建WBS,在第三版教材第380~383页; 文字图片音频方式 视频22 第一个知识点:主要输入 1、项目管理计划 范围管理计划 定义了如何根据项目范围说明书创建WBS2、项目文件 项目范围说明…

Uboot重定位

Uboot重定位 一、重定位的意义二、介绍一些重定位相关的表项结构(节)三、uboot的重定位过程:一、重定位的意义 uboot的重定位有两次,第一次是在编译成镜像后,在makefile中调用进行处理的,其调用tools/riscv_prelink.c的代码进行重定位处理(主要就是对重定位表中的R_RIS…

为什么IP地址会被列入黑名单?

您是否曾经历过网站访客数量骤减或电子邮件投递失败的困扰?这背后或许隐藏着一个常被忽略的原因:您的IP地址可能已经被列入了黑名单内。尽管您并没有进行任何违法的网络操作,但这个问题依然可能出现。那么,究竟黑名单是什么&#…

巴黎成为欧洲AI中心 大学开始输出AI创始人

来自Dealroom 的数据显示,在欧洲和以色列AI创业公司中,法国的AI创业公司资金最充裕。Mistral、Owkin、Hugging Face等法国企业已经融资23亿美元,比英国、德国AI创业公司都要多。 一名大学生走出校门凭借聪明才智和一个黄金点子成为富豪&#…

36.基于多目标螳螂优化算法的微电网优化matlab

微♥关注“电击小子程高兴的MATLAB小屋”获取资源 基于螳螂优化算法的多目标优化算法 求解微电网多目标优化调度 比较不同目标函数寻优对调度结果的影响 第1种.将两个目标函数值归一化相加,取相加后最小的目标值的粒子,即寻找折衷解并画图 第2种寻找…

Matlab|【需求响应】空调负荷需求响应模型

1主要内容 程序主要复现《溫控负荷的需求响应潜力评估及其协同优化管理研究_谢敦见》2.5部分章节的内容,建立空调负荷的聚合模型,考虑调节空调温度对空调响应潜力的影响,程序结果充分说明随着上调温度增大,响应程度逐渐增大。 具…

CVE-2019-12272 Openwrt可视页面LuCi命令注入漏洞复现(更新中)

漏洞简介 参考内容: CVE-2019-12272 OpenWrt图形化管理界面LuCI命令注入分析 | Math & Sec ,HACHp1的个人博客 CVE-2019-12272 OpenWrt图形化管理界面LuCI命令注入分析_openwrt 图形界面-CSDN博客 exploits/CVE-2019-12272 at master oreosES/exp…

PDF处理篇:如何调整 PDF 图像的大小

将视觉效果无缝集成到 PDF 中的能力使它们成为强大的通信工具。然而,笨拙的图像大小会迅速扰乱文档的流程,阻碍清晰度和专业性。幸运的是,GeekerPDF 和Adobe Acrobat等流行的应用程序提供了用户友好的解决方案来应对这一挑战。这个全面的指南…

螺旋矩阵问题C代码

给定一个n行m列的二维数组,要求按顺时针螺旋顺序输出矩阵中的所有元素,n和m小于等于10 如下图是一个三行四列的螺旋矩阵 要求输出 1 2 3 4 8 12 11 10 9 5 6 7 全局变量定义 int a[11][11]; int vis[11][11]; // 访问标记数组关键代码如下 int dx[] …

原生APP开发的特点分析

原生APP开发是指使用官方提供的开发语言和工具,针对特定的移动平台进行应用程序开发。例如,Android平台的原生APP开发使用Java或Kotlin语言,iOS平台的原生APP开发使用Objective-C或Swift语言。北京木奇移动技术有限公司,专业的软件…

使用Netty框架实现WebSocket服务端与客户端通信(附ssl)

仓库地址: https://gitee.com/lfw1024/netty-websocket 导入后可直接运行 预览页面 自签证书: #换成自己的本地ip keytool -genkey -alias server -keyalg RSA -validity 3650 -keystore D:\mystore.jks -ext sanip:192.168.3.7,ip:127.0.0.1,dns:lo…

论文阅读_基本于文本嵌入的信息提取

英文名:Embedding-based Retrieval with LLM for Effective Agriculture Information Extracting from Unstructured Data 中文名:基于嵌入的检索,LLM 从非结构化数据中提取有效的农业信息 地址: https://arxiv.org/abs/2308.03107 时间&…

h5兼容table ,如何实现h5在app内使用h5渲染table表格而且实现横屏预览?

压图地址 横屏div 通过css 实现 transform: rotate(90deg); transformOrigin: 50vw 50vw ; height: 100vw; width: 100vh;<divclass"popup-box":style"{transform: originSet 0 ? rotate(90deg) : ,transformOrigin: originSet 0 ? 50vw 50vw : ,height…

SARscape打开Sentinel1A SAR SLC产品(CSDB_20240630)

1.打开envi&#xff0c;在右侧工具包栏输入“sentinel-1”&#xff0c;并点击打开工具包。 2. 弹出文件导入界面&#xff0c;点击右侧Browse按钮。 3. 选在本地下载好的Sentinel1产品&#xff0c;文件路径最好全是英文&#xff0c;不要出现中文和特殊字符。 4 点击下方“Exec”…

【PL理论深化】(12) Ocaml 语言:高阶函数 | map 函数 | filter 函数 | fold 函数

&#x1f4ac; 写在前面&#xff1a;在函数式编程中&#xff0c;除了递归函数外&#xff0c;还经常使用高阶函数。高阶函数是指接收其他函数作为参数或返回另一个函数的函数。高阶函数通过抽象编程模式以实现重用&#xff0c;使程序可以在更高层次上进行编写。让我们重点看看常…

socket编程常见操作

1、连接的建立 分为两种&#xff1a;服务端处理接收客户端的连接&#xff1b;服务端作为客户端连接第三方服务 //作为服务端 int listenfd socket(AF_INET, SOCK_STREAM, 0); bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr))) listen(listenfd, 10); //…

JS(JavaScript)二级菜单级联案例演示

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Bazel plugin for Visual Studio Code

语法突出显示 Bazel Build Targets 树显示工作区中的构建包/目标BUILD 文件中的 CodeLens 链接可通过单击目标直接启动构建或测试Buildifier 集成以检查和格式化您的 Bazel 文件&#xff08;需要安装 Buildifier&#xff09;tasks.json 的 Bazel Task 定义在构建期间调试 .bzl…

排序【插入排序】

排序的概念 排序&#xff1a;所谓排序&#xff0c;就是将一份数据&#xff0c;通过某个或者某些关键字的大小&#xff0c;进行递增或者递减排序的操作。 稳定性&#xff1a;假定在待排序的数据组中&#xff0c;存在多个相同的元素&#xff0c;若经过排序&#xff0c;这些数据…