Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习在房屋价格预测上的应用

机器学习在房屋价格预测上的应用

作者头像
Wu_Candy
发布于 2022-07-04 13:41:20
发布于 2022-07-04 13:41:20
71100
代码可运行
举报
文章被收录于专栏:无量测试之道无量测试之道
运行总次数:0
代码可运行

前言

Python机器学习方面有天然的优势,那么我们今天也来涉足一下机器学习方面的技术,以下是在学习过程中的一些笔记,里面有大量的注释说明,用于理解为什么这样操作。

涉及到的数据见资源共享的文章--机器学习-数据集(预测房价)

代码实现如下:
Numpy & Pandas & Matplotlib & Ipython
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
import numpy as np

#Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征
import pandas as pd

#Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案
import matplotlib.pyplot as plt

#Ipython.display的库是用来展示图片的
from IPython.display import Image
from sklearn.model_selection import train_test_split

import  warnings
warnings.filterwarnings('ignore')

data = pd.read_csv("train.csv")
print(type(data))
print(data.info())
print(data.shape)
print(data.head())
print(data[['MSSubClass','LotArea']])
数据集合&缺失值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#选择数据集合中的几个重要特征
data_select = data[['BedroomAbvGr','LotArea','Neighborhood','SalePrice']]

#对数据集中的字段进行重命名
data_select = data_select.rename(columns={'BedroomAbvGr':'room','LotArea':'area'})
print(data_select)
print(data_select.shape)
print("*"*100)

#判断缺失值一般采用 isnull(),然而生成的却是所有数据的truefalse矩阵
print(data_select.isnull())

#df.isnull().any()则会判断哪些”列”存在缺失值
print(data_select.isnull().any())

#只显示存在缺失值的行列,清楚的确定缺失值的位置
print(data_select.isnull().values==True)

#对缺失的数据进行过滤
data_select=data_select.dropna(axis=0)
print(data_select.shape)
print(data_select.head())

#print(np.take(data_select.columns,[0,1,3]))
#print(type(np.take(data_select.columns,[0,1,3])))
归一化处理
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#数太大,归一化,让数据的分布处于同一区间,咱们选择一种最简单的数据调整方法,每一个数除以其最大值
for col in np.take(data_select.columns,[0,1,-1]):
    # print(col)
    # print(data_select[col])
    data_select[col] /= data_select[col].max()

print(data_select.head())

#分配测试数据和训练数据
train,test = train_test_split(data_select.copy(),test_size=0.9)
print(train.shape)
print(test.shape)
print(test.describe())


#numpy 里面axis=0 and axis=1 的使用示例说明:
print("="*50)
data=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
print(data)
print(data.shape) #shape=[3,4] 即为34print(np.sum(data)) #在numpy中若没有指定axis,默认对所有的数据相加

print(np.sum(data,axis=0))#若指定了axis=0,则沿着第一个维度的方向进行计算,即为3 按列中的3个数据进行计算,得到4组列数据计算结果

print(np.sum(data,axis=1))#若指定了axis=1,则沿着第二个维度的方向进行计算,即为4 按行中的4个数据进行计算,得到3组行数据计算结果

print("="*50)

#pandas 里面axis=0 and axis=1 的使用示例说明:
#如果我们调用df.mean(axis=1),我们将得到按行计算的均值
df=pd.DataFrame(np.arange(12).reshape(3,4))
print(df)

print(df.mean()) #在pandas中,如果没有指定axis,则默认按axis=0来计算

print(df.mean(axis=0)) #若指定了axis=0,则按照第一个维度的变化方向来计算,即为3 按列中的3个数据进行计算,得到4组列数据计算结果

print(df.mean(axis=1)) #若指定了axis=1,则按照第二个维度的变化方向来计算,即为4 按行中的4个数据进行计算,得到3组行数据计算结果
线性回归模型
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#线性回归模型,假设 h(x) = wx + b 是线性的.
def linear(features,pars):
    print("the pars is:",pars)
    print(pars[:-1])
    price=np.sum(features*pars[:-1],axis=1)+pars[-1]
    return price

print("*"*100)
train['predict']=linear(train[['room','area']].values,np.array([0.1,0.1,0.0]))

#能够看到,在该参数下,模型的预测价格和真实价格有较大的差距.那么寻找合适的参数值是咱们须要作的事情
print(train.head())


#预测函数为 h(x) = wx + b
#偏差的平方和函数:
def mean_squared_error(pred_y,real_y):
    return sum(np.array(pred_y-real_y)**2)

#损失函数:
def lost_function(df,features,pars):
    df['predict']=linear(df[features].values,pars)
    cost=mean_squared_error(df.predict,df.SalePrice)/len(df)
    return cost

cost=lost_function(train,['room','area'],np.array([0.1,0.1,0.1]))
print(cost)

#linspace函数原型:linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#作用为:在指定的大间隔内,返回固定间隔的数据。他将返回“num”个等间距的样本,在区间[start, stop]中。其中,区间的结束端点可以被排除在外,默认是包含的。
num=100
Xs = np.linspace(0,1,num)
Ys = np.linspace(0,1,num)
print(Xs) #如果num=5 ->[0.   0.25 0.5  0.75 1.  ]
print(Ys) #如果num=5 ->[0.   0.25 0.5  0.75 1.  ]

#zeros函数原型:zeros(shape, dtype=float, order='C')
#作用:通常是把数组转换成想要的矩阵;
#示例:np.zeros((2,3),dtype=np.int)
Zs = np.zeros([num,num]) #100*100的矩阵,值全为0.
print(Zs)

#meshgrid 从坐标向量中返回坐标矩阵
Xs,Ys=np.meshgrid(Xs,Ys)
print(Xs.shape,Ys.shape)
print(Xs) #如果num=5 则处理后的矩阵为:
'''
[[0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]
 [0.   0.25 0.5  0.75 1.  ]]
'''
print(Ys) #如果num=5 则处理后的矩阵为:
'''
[[0.   0.   0.   0.   0.  ]
 [0.25 0.25 0.25 0.25 0.25]
 [0.5  0.5  0.5  0.5  0.5 ]
 [0.75 0.75 0.75 0.75 0.75]
 [1.   1.   1.   1.   1.  ]]
'''
W1=[]
W2=[]
Costs=[]

for i in range(100):
    for j in range(100):
        W1.append(0.01*i)
        W2.append(0.01*j)
        Costs.append(lost_function(train,['room','area'],np.array([0.01*i,0.01*j,0.])))
#numpy.argmin(a, axis=None, out=None)
#a:一个矩阵
#axis:整数,可选(没选择的话就是整个数组的展开)(0:行,1列)
#返回小值的下标
index=np.array(lost_function).argmin()
print(W1[index],W2[index],Costs[index])

from mpl_toolkits.mplot3d import Axes3D
fig=plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.view_init(5,-15)
ax.scatter(W1,W2,Costs,s=10)
ax.scatter(0.58,0.28, zs=lost_function(train,['room','area'],np.array([0.58,0.28,0.0])),s=100,color='red')
plt.xlabel('rooms')
plt.ylabel('llotArea')
plt.show()

end

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无量测试之道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习项目:使用Python进行零售价格推荐
日本最大的社区购物应用Mercari遇到了一个问题。他们希望向卖家提供定价建议,但这很难,因为他们的卖家能够在Mercari上放置任何东西。
AiTechYun
2018/08/16
1.9K0
机器学习项目:使用Python进行零售价格推荐
【Python】机器学习之数据清洗
数据清洗,是数据分析的星光耀眼的序幕,因为原始数据集可能蕴含各种幽灵,而这些隐患将影响最终分析和建模的辉煌表演。通过巧妙的数据清洗,数据的可靠性得以提升,为分析和模型的绚丽演绎打下坚实基石。
SarPro
2024/02/20
2940
【Python】机器学习之数据清洗
[机器学习从零到壹sklearn]·0.1.1·线性拟合
[机器学习从零到壹sklearn]·0.1.1·线性拟合 code: import matplotlib.pyplot as plt import numpy as np import pandas as pd # 引入包 from sklearn.linear_model.stochastic_gradient import SGDRegressor from sklearn.preprocessing import StandardScaler from sklearn.model_selection
小宋是呢
2019/06/27
5510
[机器学习从零到壹sklearn]·0.1.1·线性拟合
机器学习算法竞赛实战-数据探索
本文是《机器学习算法竞赛实战》的读书笔记2:在进行建模之前如何进行数据探索,了解数据的基本情况。通过系统的探索加深对数据的理解。
皮大大
2023/02/23
5080
机器学习算法竞赛实战-数据探索
机器学习实战⑴之线性回归预测房价机器学习实战
一般来说,一个学习问题通常会考虑一系列 n 个 样本 数据,然后尝试预测未知数据的属性。 如果每个样本是 多个属性的数据,比如说是一个多维记录),就说它有许多“属性”,或称 features(特征) 。
用户1359560
2018/10/25
9750
用LSTM对降雨时间序列进行预测分析【代码分享,保姆级教程!】
本文将介绍如何使用长短期记忆(Long Short-Term Memory,LSTM)网络来预测降雨时间序列。LSTM是一种递归神经网络(Recurrent Neural Network,RNN),专门用于处理序列数据中的长期依赖关系。
自学气象人
2023/09/05
5K1
用LSTM对降雨时间序列进行预测分析【代码分享,保姆级教程!】
机器学习基础与实践(二)----数据转换
本博客所有内容以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! 系列目录: 1 第一部分 模型的评估与数据处理 2 3 机器学习基础与实践(一)----数据清洗 4 5 机器学习基础与实践(二)----数据转换 6 7 机器学习基础与实践(三)----数据降维 8 9 10 11 第二部分 特征工程 12 13 机器学习基础与实践(四)----特征选择 14 15 机器学习基础与实践(五)----特征
Charlotte77
2018/01/09
1.5K0
机器学习基础与实践(二)----数据转换
数据挖掘机器学习[三]---汽车交易价格预测详细版本{特征工程、交叉检验、绘制学习率曲线与验证曲线}
 题目出自阿里天池赛题链接:零基础入门数据挖掘 - 二手车交易价格预测-天池大赛-阿里云天池
汀丶人工智能
2022/12/21
7220
数据挖掘机器学习[三]---汽车交易价格预测详细版本{特征工程、交叉检验、绘制学习率曲线与验证曲线}
进阶法宝!掌握这些 NumPy & Pandas 方法,快速提升数据处理效率
Pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使python成为强大而高效的数据分析环境的重要因素之一。
数据STUDIO
2021/06/24
3.8K0
Numpy&Pandas
Numpy & Pandas 简介 此篇笔记参考来源为《莫烦Python》 运算速度快:numpy 和 pandas 都是采用 C 语言编写, pandas 又是基于 numpy, 是 numpy 的升级版本。 消耗资源少:采用的是矩阵运算,会比 python 自带的字典或者列表快好多 Numpy 学习 2.1 numpy属性 ndim:维度 shape:行数和列数 size:元素个数 举例说明: import numpy as np array = np.array([[1,2,3],[2,3,4]])
闪电gogogo
2018/04/17
2.3K0
Numpy&Pandas
贝叶斯实例中风预测详解--python
贝叶斯中风预测详解--python 1. 内容描述 1.1 字段描述 1.2 Exploratory Data Analysis探索性数据分析 1.2.1数据整体信息以及统计特征 1.2.2 id 1.2.3 gender性别 1.2.4 age年龄 1.2.5 Hypertension高血压 1.2.6 heart_disease心脏病 1.2.7 ever_married已婚与否 1.2.8 work_type工作类型 1.2.9 Residence_type居住类型 1.2.10 avg_glucos
司六米希
2022/11/15
1K0
贝叶斯实例中风预测详解--python
Kaggle初探--房价预测案例之数据分析
本文数据来源kaggle的House Prices: Advanced Regression Techniques大赛。
zhuanxu
2018/08/23
1.8K0
Kaggle初探--房价预测案例之数据分析
【数据挖掘项目】Airbnb新用户的民宿预定结果预测
摘要 本文主要根据对Airbnb 新用户的民宿预定结果进行预测,完整的陈述了从 数据探索到 特征工程到 构建模型的整个过程。 其中: 1数据探索部分主要基于 pandas库,利用常见的: head(), value_counts(), describe(), isnull(), unique()等函数以及通过 matplotlib作图对数据进行理解和探索; 2.特征工程部分主要是通过从日期中提取 年月日, 季节, weekday,对年龄进行 分段,计算相关特征之间的 差值,根据用户id进行分组,从而统计一些特征变量的 次数, 平均值, 标准差等等,以及通过 one hot encoding和 labels encoding对数据进行编码来提取特征; 3.构建模型部分主要基于 sklearn包, xgboost包,通过调用不同的模型进行预测,其中涉及到的模型有,逻辑回归模型 LogisticRegression,树模型: DecisionTree,RandomForest,AdaBoost,Bagging,ExtraTree,GraBoost,SVM模型: SVM-rbf,SVM-poly,SVM-linear, xgboost,以及通过改变 模型的参数和 数据量大小,来观察 NDGG的评分结果,从而了解不同模型,不同参数和不同数据量大小对预测结果的影响.
Datawhale
2019/07/08
2.3K0
【数据挖掘项目】Airbnb新用户的民宿预定结果预测
【缺失值处理】拉格朗日插值法—随机森林算法填充—sklearn填充(均值/众数/中位数)
缺失值的处理准备数据1 sklearn填充(1)使用均值进行填补(连续型特征)(2)使用中位数、0进行填补(连续型特征)(3)使用众数进行填补(离散型特征)(4)KNN填补
用户7886150
2020/12/30
3.1K0
数据处理(三)| 深入数据预处理:提升机器学习模型性能的关键步骤
今天要和大家继续讲解机器学习中一个看似枯燥但至关重要的环节——数据预处理。前面已经讲解过数据清洗和数据评质量评估(点击跳转),如果你已看过,那你已经打下了坚实的基础!今天这篇内容会更聚焦于预处理的核心技巧,手把手教你如何将原始数据“打磨”成模型的最爱。
CoovallyAIHub
2025/03/03
2190
数据处理(三)| 深入数据预处理:提升机器学习模型性能的关键步骤
weekly kaggle 练习题解读(House Prices)
今天给大家来讲讲《House Prices: Advanced Regression Techniques》(房价预测模型)的思路:
机械视角
2019/10/23
1.2K0
weekly kaggle 练习题解读(House Prices)
常用机器学习代码汇总
皮大大
2023/08/25
4410
【数据挖掘实战】 房价预测
本次竞赛有 79 个解释变量(几乎)描述了爱荷华州艾姆斯住宅的各个方面,需要预测每套住宅的最终价格。
机器学习司猫白
2025/01/21
1050
【数据挖掘实战】 房价预测
万字长文详解模型调参神器-Hyperopt
①随机搜索算法 ②模拟退火算法 ③TPE算法 来对某个算法模型的最佳参数进行智能搜索,它的全称是Hyperparameter Optimization。
用户8949263
2022/05/23
3.6K0
万字长文详解模型调参神器-Hyperopt
《机器学习算法竞赛实战笔记1》:如何看待机器学习竞赛问题?
更新《机器学习算法竞赛实战》一书的阅读笔记,更多详细的内容请阅读原书。本文的主要内容包含:
皮大大
2023/02/21
5570
《机器学习算法竞赛实战笔记1》:如何看待机器学习竞赛问题?
推荐阅读
相关推荐
机器学习项目:使用Python进行零售价格推荐
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验