python线性回归预测房价
加州房产预测模型(已验证)
# 矩阵计算库
import numpy as np
# 数据处理库
import pandas as pd
# 线性回归算法
from sklearn.linear_model import LinearRegression
# 导入pmml库
from sklearn2pmml import sklearn2pmml
# 导入train_test_split函数,可以用于将数据集分割成训练集和测试集
from sklearn.model_selection import train_test_split
# 导入PMMLPipeline类,用于将机器学习模型转换为PMML格式
from sklearn2pmml.pipeline import PMMLPipeline
# 导入fetch_california_housing函数,用于获取加州房屋数据集
from sklearn.datasets import fetch_california_housing
# 导入Model类,用于加载PMML模型
from pypmml import Model
# 加载加州房价数据集
california = fetch_california_housing()
# 将数据集转换为DataFrame格式,方便数据处理
df = pd.DataFrame(california.data, columns=california.feature_names)
# 将房屋价格加入DataFrame
df['Price'] = california.target
# 定义特征和目标变量
X = df[california.feature_names].values
y = df['Price'].values
# - MedInc:该地区的收入中位数。
# - HouseAge:该地区房屋的年龄中位数。
# - AveRooms:该地区平均房间数目。
# - AveBedrms:该地区平均卧室数目。
# - Population:该地区人口数。
# - AveOccup:该地区平均居住人数。
# - Latitude:该地区的纬度。
# - Longitude:该地区的经度。
print(df.head())
print(california.feature_names)
# 也可以简化为以下方式
X = california.data
y = california.target
# 实例化线性回归算法
model = LinearRegression()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.001, random_state=42)
# 训练模型
model.fit(X_train, y_train)
# 预测测试集结果
y_pred = model.predict(X_test)
# 输出测试集结果和真实结果
print('预测结果:', y_pred)
print('真实结果:', y_test)
# 计算模型的误差
mse = np.mean((y_pred - y_test) ** 2)
print('模型误差:', mse)
# 将模型输出为pmml
pipeline = PMMLPipeline([('regressor', model)])
sklearn2pmml(pipeline, 'linear_regression.pmml')
# 读取pmml
frommodel = Model.fromFile('linear_regression.pmml')
predictions = frommodel.predict(X_test)
print('预测结果predictions:',predictions)
# 用于数据可视化
import matplotlib.pyplot as plt
# 用于创建热力图
import seaborn as sns
# 创建画布并设置大小
plt.figure(figsize=(15,15))
# 创建热力图,数值为两个变量之间的相关系数,并在方块中添加注释
p=sns.heatmap(df.corr(), annot=True, square=True)
# 导入LassoCV类
from sklearn.linear_model import LassoCV
# 创建LassoCV对象
cvmodel = LassoCV()
# 使用训练集拟合模型
cvmodel.fit(X_train, y_train)
# 输出最佳的alpha值
print("alpha值",cvmodel.alpha_)
# 输出特征的相关系数
print("特征的相关系数",cvmodel.coef_)
自定义读取cvs数据、建立模型
# 导入库
import pandas as pd
from sklearn.linear_model import LinearRegression
# 导入pmml库
from sklearn2pmml import sklearn2pmml
# 读取数据
df = pd.read_csv('data.csv')
# 定义特征和目标
X = df.loc[:, ['sqft', 'bedrooms']] # 特征
y = df['price'] # 目标
# 创建线性回归模型
model = LinearRegression()
# 将模型拟合训练集
model.fit(X, y)
# 进行预测
predictions = model.predict(X)
# 将模型输出为pmml
sklearn2pmml(model, 'model.pmml')
样本data.csv
sqft | bedrooms | price
1000 | 2 | 100000 1200 | 3 | 150000 1300 | 3 | 180000 1500 | 4 | 220000 1600 | 4 | 250000 1800 | 5 | 300000 2000 | 5 | 350000 2200 | 6 | 400000 2400 | 6 | 450000 2600 | 7 | 500000 3000 | 8 | 600000
读取模型并将预测结果输出
# 导入库
from sklearn2pmml import PMMLPipeline
# 读取已经生成的pmml模型
pipeline = PMMLPipeline.fromFile('model.pmml')
# 定义特征和目标
X = [[1000, 2], [1200, 3], [1300, 3], [1500, 4], [1600, 4], [1800, 5], [2000, 5], [2200, 6], [2400, 6], [2600, 7], [3000, 8]]
# 进行预测
predictions = pipeline.predict(X)
# 输出结果
print(predictions)