加州房价预测项目是kaggle上比较热门的一个项目了,属于回归分析的范畴,这几天有空用来练练手(to be continued):
#!/usr/bin/python
# -*-coding: utf8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
#载入数据函数
def load_housing_data():
return pd.read_csv("D://housing.csv")
#载入数据,查看前五行
df = load_housing_data()
print(df.head(5))
#快速查看数据的描述,特别是总行数、每个属性的类型和非空值的数量
print(df.describe())
#通过柱状图了解各个特征的分布情况
df.hist(bins=30)
plt.show()
#数据探索与可视化
df.plot(kind="scatter",x="longitude",y="latitude",alpha=0.4)
plt.show()
print(df.head(5))
df.plot(kind="scatter",x="longitude",y="latitude",alpha=0.4,c="median_house_value",cmap=plt.get_cmap("jet"),colorbar=True)
plt.show()
#特征扩展,从已有特征中组合生成更多的可能有用的特征,如果熟悉房产业务则更容易想到有用的特征,这也就是数据分析为什么要建立在熟悉业务的基础上
df["room_per_household"] = df["total_rooms"] / df["households"]
df["bedroom_per_room"] = df["total_bedrooms"] / df["total_rooms"]
df["population_per_household"] = df["population"] / df["households"]
print(df.head(5))
#数据清洗和预处理
X = df.loc[:,['longitude','latitude','housing_median_age','total_rooms','total_bedrooms','population','households','median_income','room_per_household','bedroom_per_room','population_per_household']]
Y = df.loc[:,'median_house_value']
print(X.head(5))
#相关性分析(各特征与房价中位数的相关系数进行排序,使用pearson相关系数,并把相关矩阵画图)
corr_matrix = df.corr()
print(corr_matrix)
print(corr_matrix["median_house_value"].sort_values(ascending=False))
sns.heatmap(df.corr(),annot=True, cmap="RdBu")
plt.show()
房价中位数(待预测值)与各个特征的相关系数
数据预处理
#去掉空值
df = df.dropna(axis=0)
#归一化
df = (df-df.min())/(df.max()-df.min())
数据集切分
x_train,x_test,y_train,y_test = train_test_split(df.iloc[:, 1:],df.iloc[:,0],test_size=0.15,random_state=15)
to be continued