预测房价是一个离散值,所以采用回归的方法。

数据读取

采用 pandas.read_csv() 方法读取文件。

然后再采用pandas_profiling模块对数据进行分析(探索性数据分析Exploratory Data Analysis,简称EDA)
pearson皮尔逊系数(单变量),spearman(多变量)

import pandas as pd
import pandas_profiling as ppftrain = pd.read_csv("train.csv") #数据读取进来
train.headtest = pd.read_csv("test.csv")
test.headppf.ProfileReport(train)
ppf.ProfileReport(test)

注pandas的两种数据结构是series和dataframe
pandas的可视化函数是 pandas.plotting.andrew_curves/bootstrap_plot/lag_plot/radviz/scatter_matrix

数据清洗

再进行数据清洗,删除重复信息,纠正存在的错误,并提供数据一致性(字符化为数字)。
难点:难以归纳统一的方法

数据清洗方法

1、解决缺失值:最大最小平均或者更为复杂的概率估计去替代缺失的值
注意不能随意删除,会导致特征丢失。

miss = full.isnull().sum() #统计出空值的个数
miss[miss>0].sort_values(ascending=True) #由低到高统计数据 #字符类型
for col in cols1:full[col].fillna("None",inplace=True)#数值类型
for col in cols:full[col].fillna(0, inplace=True)#平均值填充
full["LotFrontage"].fillna(np.mean(full["LotFrontage"]),inplace=True)#众数填充
for col in cols2:full[col].fillna(full[col].mode()[0], inplace=True)

2、去重:相等的记录合并为一条记录(即合并或者清除)
3、解决错误值:用统计分析的方法识别出可能的错误值或异常值。如偏差分析、是被不遵守分布或回归方程的值,也可以采用简单规则库(常识性规则,业务特定规则)等等

利用箱型图发现异常点

import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10,8))
sns.boxplot(train.YearBuilt, train.SalePrice)  ##箱型图是看异常值的,离群点

利用线形图删除异常点

plt.figure(figsize=(12,6))
plt.scatter(x=train.GrLivArea, y=train.SalePrice)  ##散点图可以用来观察存在线型的关系
plt.xlabel("GrLivArea", fontsize=13)
plt.ylabel("SalePrice", fontsize=13)
plt.ylim(0,800000)
train.drop(train[(train["GrLivArea"]>4000)&(train["SalePrice"]<300000)].index,inplace=True)#pandas 里面的条件索引 删除大于4000和小于300000的散点
#​ inplace = True:不创建新的对象,直接对原始对象进行修改​ inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果。

4、解决数据的不一致性:不如数据是类别性(label/onehot)或者次序型(第一第二第三不能放到模型中去用label)

数据清洗的八大场景

1、删除多列 采用pandas中的drop
2、更改数据类型
3、将分类变量转换为数字变量
4、检查缺失的数据
5、删除列中的字符串
6、删除列中的空格 利用dropna
7、用字符串连接两列(带条件) 数据的乘除之类的
8、转换时间戳(从字符串到日期时间格式)

数据处理

让数据更好的能够拟合好我们的模型,更便于计算,减少计算量,但是具体问题要具体分析。

方法:
1、对数变换
2、标准缩放
3、转换数据类型
4、独热编码

full2 = pd.get_dummies(full)##独热编码

5、标签编码

from sklearn.preprocessing import LabelEncoder
lab = LabelEncoder()
full["Alley"] = lab.fit_transform(full.Alley)
full["PoolQC"] = lab.fit_transform(full.PoolQC)
full["MiscFeature"] = lab.fit_transform(full.MiscFeature)
full["Fence"] = lab.fit_transform(full.Fence)
full["FireplaceQu"] = lab.fit_transform(full.FireplaceQu)
full["GarageQual"] = lab.fit_transform(full.GarageQual)
full["GarageCond"] = lab.fit_transform(full.GarageCond)
full["GarageFinish"] = lab.fit_transform(full.GarageFinish)

特征工程 sklearn

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
特征工程:最大限度从原始数据中提取特征以供算法和模型使用。

特征工程主要分为三部分(以及对应的sklearn包):
1、数据预处理 sklearn-Processing data
不属于同一量纲:即特征的规格不一样,不能够放在一起比较。无量纲化可以解决这一问题。
信息冗余:对于某些定量特征,其包含的有效信息为区间划分,例如学习成绩,假若只关心“及格”或不“及格”, 那么需要将定量的考分,转换成“1”和“0”表示及格和未及格。二值化可以解决这一问题。
定性特征不能直接使用:通常使用哑编码的方式将定性特征转换为定量特征,假设有N种定性值,则将这一个特 征扩展为N种特征,当原始特征值为第i种定性值时,第i个扩展特征赋值为1,其他扩展特征赋值为0。哑编码的 方式相比直接指定的方式,不用增加调参的工作,对于线性模型来说,使用哑编码后的特征可达到非线性的效 果。(哑编码也就是独热编码)
存在缺失值:填充缺失值。
信息利用率低:不同的机器学习算法和模型对数据中信息的利用是不同的,之前提到在线性模型中,使用对定性特征哑编码可以达到非线性的效果。类似地,对定量变量多项式化,或者进行其他的数据变换,都能达到非线性的效果。
2、特征选择 sklearn-Feature selection
3、降维 sklearn-Dimensionality reduction

kaggle house price思路记录相关推荐

  1. 2020年小美赛B赛题(+译文)和思路记录

    原赛题是: 下面是译文: 下面是分析思路记录: 先是问题一 问题一:本问要求使用数据,利用几个参数完成对氧饱和度变化的典型模型的建立. 问题的侧重点在于,从个体连续时间氧饱和度值中提取出能够描述个体的 ...

  2. LeetCode 刷题思路记录

    数组篇 题1 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一 ...

  3. java分页代码思路,记录--java 分页 思路 (hibernate关键代码)

    有时会脑袋蒙圈,记录下分页的思路 下面代码是hibernate的分页,其分页就是从第几条数据为起点,取几条数据.比如在mysql中的limit(5,10)取的就是第6条到第10条 在下面代码中的pag ...

  4. 【2020数模F奖】 美赛C题参赛感受及做题思路记录【编程手的角度,含大量代码及参考链接】

    目录 写在前面的话 题目分析 [数据清洗] [NLTK] [第一题] [第2题e问] [词云]---wordcloud包 [TF-IDF算法] [第2题a.b.c问]需要先对评论数值化 [Textbl ...

  5. SpringBoot+log4j2的思路记录,实现每天输出日志文件

    收到大哥的一个要求:要用log4j2来记录开发过程中产生的信息,并以天为单位,保存日志文件:七天为一个周期. 听到这个需求,心里直打鼓,怎么做啊: 学习了一圈下来以后,也算是完成了这个任务安排: 乘机 ...

  6. e431装linux系统恢复,Mac、Linux、Windows三系统的备份恢复以及引导修复思路记录

    人的记忆力有限,写篇文章方便查阅.本人是Mac + Linux + Win 三系统,Clover+UEFI引导方式 Windows 备份:直接将整个盘压缩为镜像即可 恢复:将镜像恢复到你的新磁盘即可 ...

  7. 百度云管家下载出错解决思路记录

    今天不知道怎么回事,百度云管家下载列表内的资料都下载不了了 提示下载失败 遂升级百度运管家至最新版3.0.1 问题依旧 用Navicat Premium打开运管家下载记录数据库 位于C:\Users\ ...

  8. 小爱同学控制单片机或者其它硬件的思路记录

    由于小米只能家具生态的协议是不开放的,但是有很多同学想使用小爱同学的语音功能去控制单片机.树莓派或者其他DIY硬件.因此有个下面这个构想.初步验证可行. 实验具备条件 DIY设备联网(直接或者间接) ...

  9. 手机实现esp8266远程控制解决思路记录

    手机+esp8266->远程控制 实现方式概述: 1.要实现远程控制就必须得租用一个服务器,可以租用云服务器,比如阿里云的ECS 2.手机与服务器建立tcp长连接 3.esp8266与服务器建立 ...

最新文章

  1. git在公司内部的使用实践(转)
  2. oracle 10g
  3. zuul过滤器执行生命周期
  4. Python菜鸟之python入门
  5. www.SQnote.cn
  6. 卷积与反卷积、步长(stride)与重叠(overlap)及 output 的大小
  7. 【Shell 脚本】Mysql 定时备份
  8. Android热修复升级探索——代码修复冷启动方案 1
  9. 【数学建模】数学建模指导:建模常用算法应用场景解析
  10. ubuntu安装微信linux电脑版
  11. useSSL=false or true如何抉择
  12. 第二章:计算机中的数据
  13. 记一次从 git pull 出现 Untracked FilesPervent Merge
  14. LED指示灯在常见网络设备故障诊断中的应用
  15. Gitee如何上传整个项目文件夹
  16. Java微信公众平台开发_03_消息管理之被动回复消息
  17. 关于java.lang.Exception:No tests found matching的一系列解决方法
  18. Android 天气APP(十)继续优化、下拉刷新页面天气数据
  19. 数据库 主键 外键 唯一键区别
  20. 火车票能不能选座_买火车票可以选座位吗

热门文章

  1. 一个资深程序员的忠告
  2. srt文件与视频文件合成在一起导入剪映
  3. 40岁女人更有女人味
  4. launchy cross platform quick launch tools
  5. FME World tour 2016:FME Coin
  6. 2018-02-07 Dynatrace试用及一点想法
  7. 播放器的基本原理(播放四步法)
  8. mybatis字符串比较
  9. 生于彼,长于此:狗形机器人的中国情缘
  10. Chipletz 采用芯和半导体Metis工具设计智能基板产品