sklearn进行房价预测

-- coding: utf-8 --

“”"
@Time : 19-9-21 下午7:09
@Author : lei
@Site :
@File : 房价预测.py
@Software: PyCharm
“”"

房价预测

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import StandardScaler
from sklearn.externals import joblib
import matplotlib.pyplot as plt
from matplotlib import font_manager
import pandas as pd
import numpy as np

def main():
name = [“area”, “price”]
data = pd.read_csv("./house_data.txt", names=name)

x_train, x_test, y_train, y_test = train_test_split(data.iloc[:, 0], data.iloc[:, 1], train_size=0.25)

std_x = StandardScaler()
x_train = std_x.fit_transform(np.array(x_train).reshape(-1, 1))
x_test = std_x.transform(np.array(x_test).reshape(-1, 1))

std_y = StandardScaler()
y_train = std_y.fit_transform(np.array(y_train).reshape(-1, 1))
y_test = std_y.transform(np.array(y_test).reshape(-1, 1))

lr = LinearRegression()
lr.fit(x_train, y_train)
y_predict = std_y.inverse_transform(lr.predict(x_test))

error = mean_squared_error(std_y.inverse_transform(y_test), y_predict)
print("正确结果为:", std_y.inverse_transform(y_test))
print("预测结果为:", y_predict)
print("均方误差为:", error)
print("数据波动大小可以为:", error ** 0.5)

# joblib.dump(lr, "./test.pkl")

def main2():
while True:
try:
area = int(input(“请输入您要预测的平米大小:”))
except Exception as ex:
print(“输入错误, 重新输入!”, ex)
else:
break
estimator = joblib.load("./test.pkl")
y_predict = estimator.predict(np.array(area).reshape(-1, 1))
print(“预测的结果为:”, y_predict)

def main3():
data = pd.read_csv("./house_data.txt", names=[“area”, “price”])

data = data.sort_values(["area"], ascending=False)

area = data.iloc[:, 0].to_list()
price = data.iloc[:, 1].to_list()

my_font = font_manager.FontProperties(fname="/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc")

plt.figure(figsize=(20, 8), dpi=80)

plt.xticks(range(40, 220, 20), ["{}m^2".format(i) for i in range(40, 220, 20)], font_properties=my_font)
# plt.yticks(range(200, 200, 2100))

plt.xlabel("面积大小", font_properties=my_font, color="blue")
plt.ylabel("money", font_properties=my_font, color="cyan")

plt.title("房屋面积和价格走势图", fontproperties=my_font)

plt.scatter(area, price, color="pink", label="房屋价格走势")

plt.legend(prop=my_font)

plt.grid(alpha=0.3, color="grey")

plt.savefig("./house_price.png")

plt.show()

if name == ‘main’:
main3()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值