对房价数据集进行处理和数据分析

      大家好,我是带我去滑雪,每天教你一个小技巧!

      房价数据集通常包含各种各样的特征,如房屋面积、地理位置、建造年份等。通过对数据进行处理和分析,可以更好地理解这些特征之间的关系,以及它们对房价的影响程度。这有助于确定哪些特征是最重要的,从而更有针对性地制定房地产策略。本次使用波士顿房价数据集boston_housing_data.csv,该数据集有城镇人均犯罪率(CRIM)、住宅用地所占比例(ZN)、城镇中非住宅用地所占比例(INDUS)等共计13个特征变量,响应变量为社区房价中位数(MEDV)。实现对房价数据进行可视化和统计分析:如绘制直方图、密度图、箱线图以及查看各个散点图的分布,最后使用支持向量机和KNN等几种机器学习方法进行学习。下面开始实战。

(1)导入相关模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from numpy import arange
from matplotlib import pyplot
from pandas import read_csv
from pandas import  set_option
from pandas.plotting import scatter_matrix
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_predict
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR
from sklearn.pipeline import Pipeline
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.ensemble import ExtraTreesRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.metrics import mean_squared_error
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression

(2)导入数据并进行可视化分析

def testHouse():
    data = pd.read_csv("house_data.csv")
    set_option('display.column_space', 120)
    print(data.shape)
    print(data.isnull().any().sum())
    prices = data['MEDV']
    features = data.drop('MEDV', axis=1)
    # 直方图
    data.hist(sharex=False, sharey=False, xlabelsize=1, ylabelsize=1)
    pyplot.show()
    # 密度图
    data.plot(kind='density', subplots=True, layout=(4, 4), sharex=False, fontsize=1)
    pyplot.show()
    # 箱线图
    data.plot(kind='box', subplots=True, layout=(4, 4), sharex=False, sharey=False, fontsize=8)
    pyplot.show()
    # 查看各个特征的散点分布
    scatter_matrix(data, alpha=0.7, figsize=(10, 10), diagonal='kde')
    pyplot.show()
    # Heatmap
testHouse()

结果展示:

绘制房价数据的直方图:

绘制房价数据的密度图: 

绘制 房价数据的箱线图:

 查看房价数据各个特征的散点分布:

(3)使用支持向量机和KNN等机器学习方法学习

def featureSelection():
    data = pd.read_csv("house_data.csv")
    x = data[['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX',
              'PTRATIO', 'B', 'LSTAT']]
    # print(x.head())
    y = data['MEDV']
    from sklearn.feature_selection import SelectKBest
    SelectKBest = SelectKBest(f_regression, k=3)
    bestFeature = SelectKBest.fit_transform(x, y)
    SelectKBest.get_support(indices=False)
    # print(SelectKBest.transform(x))
    print(x.columns[SelectKBest.get_support(indices=False)])
    features = data[['RM', 'PTRATIO', 'LSTAT']].copy()
    from sklearn.preprocessing import MinMaxScaler
    scaler = MinMaxScaler()
    for feature in features.columns:
        features.loc[:, '标准化' + feature] = scaler.fit_transform(features[[feature]])
    # 散点可视化,查看特征归一化后的数据
    font = {
        'family': 'SimHei'
    }
    x_train, x_test, y_train, y_test = train_test_split(features[['标准化RM', '标准化PTRATIO', '标准化LSTAT']], y,
                                                        test_size=0.3, random_state=33)

    import warnings
    warnings.filterwarnings(action="ignore", module="scipy", message="^internal gelsd") #过滤告警

    lr = LinearRegression()
    lr_predict = cross_val_predict(lr, x_train, y_train, cv=5)
    lr_score = cross_val_score(lr, x_train, y_train, cv=5)
    lr_meanscore = lr_score.mean()
    #SVR
    from sklearn.svm import SVR
    linear_svr = SVR(kernel = 'linear')
    linear_svr_predict = cross_val_predict(linear_svr, x_train, y_train, cv=5)
    linear_svr_score = cross_val_score(linear_svr, x_train, y_train, cv=5)
    linear_svr_meanscore = linear_svr_score.mean()

    poly_svr = SVR(kernel = 'poly')
    poly_svr_predict = cross_val_predict(poly_svr, x_train, y_train, cv=5)
    poly_svr_score = cross_val_score(poly_svr, x_train, y_train, cv=5)
    poly_svr_meanscore = poly_svr_score.mean()
    rbf_svr = SVR(kernel = 'rbf')
    rbf_svr_predict = cross_val_predict(rbf_svr, x_train, y_train, cv=5)
    rbf_svr_score = cross_val_score(rbf_svr, x_train, y_train, cv=5)
    rbf_svr_meanscore = rbf_svr_score.mean()
    knn = KNeighborsRegressor(2, weights='uniform')
    knn_predict = cross_val_predict(knn, x_train, y_train, cv=5)
    knn_score = cross_val_score(knn, x_train, y_train, cv=5)
    knn_meanscore = knn_score.mean()

    dtr = DecisionTreeRegressor(max_depth=4)
    dtr_predict = cross_val_predict(dtr, x_train, y_train, cv=5)
    dtr_score = cross_val_score(dtr, x_train, y_train, cv=5)
    dtr_meanscore = dtr_score.mean()

    evaluating = {
        'lr': lr_score,
        'linear_svr': linear_svr_score,
        'poly_svr': poly_svr_score,
        'rbf_svr': rbf_svr_score,
        'knn': knn_score,
        'dtr': dtr_score
    }
    evaluating = pd.DataFrame(evaluating)
    print(evaluating)

def main():
if __name__ == "__main__":
    main()

输出结果:

Index(['RM', 'PTRATIO', 'LSTAT'], dtype='object')
         lr  linear_svr  poly_svr   rbf_svr       knn       dtr
0  0.738899    0.632970  0.866308  0.758355  0.806363  0.787402
1  0.755418    0.618558  0.865458  0.772783  0.888141  0.871562
2  0.433104    0.386320  0.569238  0.529242  0.590950  0.545247
3  0.604445    0.554785  0.723299  0.740388  0.728388  0.583349
4  0.793609    0.611882  0.805474  0.736040  0.863620  0.824755

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/173deLlgLYUz789M3KHYw-Q?pwd=0ly6
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:1736732074@qq.com 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

  • 28
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
好的,以下是一些更深入的分析技术和方法,可以对波士顿房价数据进行更全面的分析: 1. 变量相关性分析 使用相关性分析来了解各个变量之间的关系。可以使用`cor()`函数来计算变量之间的相关系数,例如: ```R cor(boston) ``` 该命令会输出一个相关系数矩阵,展示了各个变量之间的相关性。 2. 变量选择 在建立模型时,可以使用变量选择技术来挑选出对房价预测最为重要的变量。例如,可以使用LASSO回归来进行变量选择: ```R library(glmnet) x <- model.matrix(MEDV ~ ., data = boston)[,-1] y <- boston$MEDV lasso <- glmnet(x, y, alpha = 1) plot(lasso, xvar = "lambda", label = TRUE) ``` 该命令会生成一个LASSO回归的收缩路径图,展示了不同惩罚系数下各个变量的系数值。通过这个图可以选择出重要的变量。 3. 模型评估 使用交叉验证等技术来评估模型的准确性和泛化能力。例如: ```R library(caret) ctrl <- trainControl(method = "cv", number = 5) model <- train(MEDV ~ ., data = boston, method = "lm", trControl = ctrl) summary(model) ``` 该命令使用交叉验证来训练一个线性回归模型,并输出模型的统计摘要和交叉验证的结果。 4. 非线性建模 考虑使用非线性模型来预测房价,例如决策树模型: ```R library(rpart) tree <- rpart(MEDV ~ ., data = boston) plot(tree) ``` 该命令会建立一个决策树模型,并生成一个决策树图表。这可以帮助我们找到数据中的非线性关系。 以上是一些更深入的分析技术和方法,可以帮助我们更全面地了解波士顿房价数据集
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带我去滑雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值