机器学习入门之房价预测(线性回归)

#!/usr/bin/env python
# coding: utf-8

# In[1]:


# 1.定义问题

# 2.导入数据

# 导入类库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split, KFold, cross_val_score
from sklearn.preprocessing import StandardScaler
get_ipython().run_line_magic('matplotlib', 'inline')

import warnings
warnings.filterwarnings('ignore')

# 显示所有列
pd.set_option('display.max_columns', None)

# 导入数据
train_data = pd.read_csv('../data/train.csv')
test_data = pd.read_csv('../data/test.csv')


# In[2]:


# 3.理解数据
# 数据信息
train_data.info()


# In[3]:


# 数据维度
train_data.shape


# In[4]:


# 前5个数据
train_data.head(5)


# In[5]:


# 描述性统计数据
train_data.describe().T


# In[6]:


# 4.数据可视化

# 分析SalePrice
train_data['SalePrice'].describe()
sns.distplot(train_data['SalePrice'])
plt.show()


# In[7]:


# 关系矩阵
corr = train_data.corr()
f, ax = plt.subplots(figsize=(20, 9))
sns.heatmap(corr, vmax=1, vmin=-1,square=True)


# In[8]:


# 选取特征
# 选择相关系数绝对值大于0.5的特征(共十个)
train_data.corr()[train_data.corr()['SalePrice'].values > abs(0.5)]


# In[9]:


cols = ['OverallQual', 'YearBuilt', 'YearRemodAdd', 'TotalBsmtSF', '1stFlrSF', 'GrLivArea', 'FullBath', 'TotRmsAbvGrd', 'GarageCars', 'GarageArea', 'SalePrice']
train_data = train_data[cols]
train_data.info()


# In[10]:


# 5.建立模型

# 分离数据集
X = train_data.values[:, 0:10]
Y = train_data.values[:, 10]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.33, random_state=42)
# 建模
model = LinearRegression()
# 预测数据
model.fit(X_train,Y_train)
y_pred = model.predict(X_test)
print('cost:'+ str(np.sum(abs(y_pred-Y_test)/len(y_pred))))


# In[11]:


# 由于原始数据所得cost太大,所以接下来对数据进行归一化处理(误差反而更大了,不知道为什么???)
X_scaled = StandardScaler().fit_transform(X)
Y_scaled = StandardScaler().fit_transform(Y.reshape(-1, 1))
X_scaled_train, X_scaled_test, Y_scaled_train, Y_scaled_test = train_test_split(X_scaled, Y_scaled, test_size=0.33, random_state=42)
model_scaled = LinearRegression()
model_scaled.fit(X_scaled_train,Y_scaled_train)
y_pred = model.predict(X_scaled_test)
y_pred
print('cost:'+ str(np.sum(abs(y_pred-Y_scaled_test)/len(y_pred))))


# In[12]:


test_data['SalePrice'] = None
test_data = test_data[cols]
# 填充缺失值
test_data['TotalBsmtSF'].fillna(test_data['TotalBsmtSF'].median(), inplace=True)
test_data['GarageCars'].fillna(test_data['GarageCars'].median(), inplace=True)
test_data['GarageArea'].fillna(test_data['GarageArea'].median(), inplace=True)


# In[13]:


X = test_data.values[:, 0:10]
y_test_pre = model.predict(X)
test_data['SalePrice'] = y_test_pre
test_data.head(10)

 

转载于:https://www.cnblogs.com/coco-shi/p/9820658.html

系统化地阐述了数据挖掘和知识发现技术的产生、发展、应用和相关概念、原理、算法。对数据挖掘中的主要技术分支,包括关联规则、分类、聚类、序列、空间以及Web挖掘等进行了理论剖析和算法描述。本书的许多工作是作者们在攻读博士学位期间的工作总结,一方面,对于相关概念和技术的阐述尽量先从理论分析入手,在此基础上进行技术归纳。另一方面,为了保证技术的系统性,所有的挖掘模型和算法描述都在统一的技术归纳框架下进行。同时,为了避免抽象算法描述给读者带来的理解困难,本书的所有典型算法都通过具体跟踪执行实例来进一步说明。本书共分8章,各章相对独立成篇,以利于读者选择性学习。在每章后面都设置专门一节来对本章内容和文献引用情况进行归纳,它不仅可以帮助读者对相关内容进行整理,而且也起到对本内容相关文献的注释性索引功能。第1章是绪论,系统地介绍了数据挖掘产生的商业和技术背景,从不同侧面剖析了数据挖掘的概念和应用价值;第2章给出了知识发现的过程分析和应用体系结构设计;第3章对关联规则挖掘的原理和算法进行全面阐述;第4章给出分类的主要理论和算法描述;第5章讨论聚类的常用技术和算法;第6章对时间序列分析技术和序列挖掘算法进行论述;第7章系统地介绍了Web挖掘的主要研究领域和相关技术及算法;第8章是对空间数据挖掘技术和算法的分析和讲述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值