“”"
@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()