新手可以上天池或者是kaggle上下载数据,我就是在天池上的学习赛找模型进行学习的。

当我们拿到一个csv后,就要审视这个文档里的数据。我现在在做的模型就是有关客户贷款违约的一个比赛吧。那么首先要导入这个数据啊,这个csv分为两个数据集,一个是train,另外两个是test,就是说这个这个比赛的意义就是通过训练集的训练(训练集的数据量是很大的)然后将调教好的模型用于测试集,分数越高越好。

附上链接

零基础入门金融风控-贷款违约预测相关的问题-天池大赛-阿里云天池

拿到数据后呢,我们首先要审视一下数据,至于task2提到的数据可视化,我的指导老师认为,在实际的商业案例中,用来做ppt的,你再开始建模的时候呢,完全不用管好了。首先是导入数据。这边导入数据是要用到一些包的,上午我看到一文章说,现在都爱pandas,产生的是dataframe(一个矩阵形式,有行有列)。好,那我们就要把它从本地文件导入到jupyter里面,其实导入到python里,这里代码这样写

train = pd.read_csv('C:\\Users\harrison.huang\\Desktop\\train (1).csv')

pd是包pandas的简写。记住是双斜杠,如果单斜杠不行的话。

ok,接下来,这些数据,比如说有些位置他是没有值的,就好像你的数据存在收集不到,或者是说误删了怎么样。那么你要宏观的了解一下那些数据缺失了。数值特征就是说数值,对象特征就是说以包含了其他的字符。这里我们要分开这两个数据。类别型也是对象型特征。

numerical_fea = list(train.select_dtypes(exclude=['object']).columns)
category_fea = list(filter(lambda x: x not in numerical_fea,list(train.columns)))

运行完这个命令之后就可以将类别型变量和数值型变量分别开了。

1、熵值法建模:不需要类别型变量,那就清除

代码:data.drop(category_fea)。所以清除函数drop()。

比赛数据相比真实场景的数据相对要干净一些,现实场景中,例如你从银行收到数据,但是你会发现很多数据都是大片大片缺失的,在这种情况下,就要认真考虑数据值如何填充的问题了,比如说,如果是时间序列的一个数据(股价),那么现在的价格就很大程度上受到了上一时期数据的影响,因此,可以使用上面一格的数据直接填充。那么对于横截面数据,可以观察这个数据的分布。如果是呈正态分布的,那么就可以取中位数或者平均数。

在补充缺失值之前,我们需要将缺失值太多的列直接删去,一般缺失值大于百分之50的列,以及全部都是一样的值的列,就都可以删去了,因为没有什么太大的意义。

删除列的代码:

def remcolumns(data):
    t = int(0.5*data.shape[0])
    data = data.dropna(thresh=t,axis=1)#保留至少含有百分之50数据的列
    #data = data.loc[:, (data != 0).any(axis=0)]
    return data

def del_rows(data):
    t = int(0.7*data.shape[1])
    data = data.dropna(thresh=t)#保留至少有 百分之70数据的行
    #data = data[(data.T != 0).any()]
    return data
data = remcolumns(data)
data = del_rows(data)
data

失值填充代码:

1、把所有缺失值替换为指定的值0。   data = data.fillna(0)

2、用缺失值上面的值替换缺失值。  data = data.fillna(axis=0,method = 'ffill')

3、纵向用缺失值下面的值替换缺失值,且设置最多只填充两个连续的缺失值

data = data.fillna(axis=0 ,method = 'bfill',limit= 2)

4、用这一列的平均值替代  data_clean = data.fillna(data.mean())

axis的重点在于方向,而不是行和列。1表示横轴,方向从左到右;0表示纵轴,方向从上到下。

关于ffill和bfill的区别,附上链接:填补缺失值的两种方法ffill和bfill_zyq_go的博客-CSDN博客_ffillPandas填充缺失值两种方法:bfill/ffill对比https://blog.csdn.net/weixin_43041009/article/details/106567123?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164679381616780264058637%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164679381616780264058637&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-106567123.pc_search_result_cache&utm_term=ffill%E5%92%8Cbfill&spm=1018.2226.3001.4187

在对部分数据进行这个数据填充时,经常会遇到一些机器无法是识别的类型特征(例如带汉字的),这个时候就要把这个汉字按照规律转化为数字,就是所谓的类别转换,就是为了机器可以较好的识别。

补上数据缺失的部分后,这时,我们就要开始异常值的处理了。异常值,即在数据集中存在不合理的值,又称离群点(outlier)。下面这个链接讲的很好,都去看看。

数据分析 第五篇:异常值分析 - 悦光阴 - 博客园异常值在统计学上的全称是疑似异常值,也称作离群点(outlier),异常值的分析也称作离群点分析。异常值是指样本中出现的“极端值”,数据值看起来异常大或异常小,其分布明显偏离其余的观测值。异常值分析是https://www.cnblogs.com/ljhdo/p/5061297.html

异常值的处理目前来说,我接触了两种,一种就是所谓的3segema检验,大家学概率论与数理统计的时候就应该学习过。这里我的业界老师说,这个不咋用,大多数都用箱线图。那么接下来我们认真研究一下箱线图

首先我们要了解一下四分位点内距(Inter-Quartile Range,IQR),是指在第75个百分点与第25个百分点的差值,或者说,上、下四分位数之间的差,计算IQR的公式是:IQR = Q3 − Q1 。

通常,把小于 Q1 - 1.5 * IQR 或者大于 Q3 + 1.5 * IQR的数据点视作离群点,探测离群点的公式是:outliers =  value < ( Q1 - 1.5 * IQR )  or value > ( Q3 + 1.5 * IQR )

这种探测离群点的方法,是箱线图默认的方法,箱线图提供了识别异常值/离群点的一个标准:

异常值通常被定义为小于 QL - l.5 IQR 或者 大于 Qu + 1.5 IQR的值,QL称为下四分位数, Qu称为上四分位数,IQR称为四分位数间距,是Qu上四分位数和QL下四分位数之差,其间包括了全部观察值的一半。

如果,我们在特征工程部份进行了分箱,那么就可以不用进行异常值处理??(老师说的)所以说特征工程就是在建模之前,把数据给彻底的整理好,

写到这,我认为我还是需要再了解一下特征工程。下面附上链接。

什么是特征工程?如何进行特征工程?_Machine Learning with Turing's Cat-CSDN博客_特征工程我的机器学习教程「美团」算法工程师带你入门机器学习 已经开始更新了,欢迎大家订阅~任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~目录...https://blog.csdn.net/qq_39521554/article/details/78877505?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164620496316780271953543%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164620496316780271953543&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-78877505.pc_search_result_cache&utm_term=%E7%89%B9%E5%BE%81%E5%B7%A5%E7%A8%8B&spm=1018.2226.3001.4187

接下来就是对特征进行筛选。

当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:

1、特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。

2、特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。除方差法外,本文介绍的其他方法均从相关性考虑。

首先是过滤法(fliter):方差选择法,相关系数法

ok,那么说,我们已经知道存在一个θ,但是要把它如何找出来呢?这里涉及代价函数和梯度

首先,我们可能出现如下的这种多凸函数,但是我们要找的就是最低点,因此可能找的是极小值不是最小值,所以我们要从开始就找下降最快的这个方向,以达到最低点。

不断下降后,找到的最低点,就是能够成为分界线的θ值。

接下来,学习xgboost了

白话机器学习算法理论+实战番外篇之Xgboost_Miracle8070-CSDN博客_白话机器学习算法

初学者上手python建模相关推荐

  1. 初学者学习python的几个建议

    初学者学习python的几个建议 Python是最容易入门的编程语言,没有之一.如果初学者接触的第一门语言是C或者C++,对他们来说最难的不是语法,而是容易出现内存泄漏.指针等问题.有时候排查这些问题 ...

  2. python 编程该看那些书籍_初学者自学Python要看什么书?

    原标题:初学者自学Python要看什么书? 人工智能时代的来临让Python崭露头角,语法简洁.功能强大的特性更是吸引了很多人学习Python.由于某些条件的限制,有部分人选择自学Python,而需要 ...

  3. python一般学多久可以考试_为何Python适合初学者 一般Python要学习多久

    为何Python适合初学者?一般Python要学习多久?很多人都觉得,Python是一门很好学的语言,非常适合入门.但更多人都是不清楚具体原因的.那么,我们不如一起来看看Python为何更适合初学者, ...

  4. python容易学ma_初学者学python 初学者学python好学吗

    初学者学python 初学者学python好学吗 初学者学python好学吗?Python是最容易入门的编程语言,没有之一.如果初学者接触的第一门语言是C或者C++,对他们来说最难的不是语法,而是容易 ...

  5. 灰色预测之GM(1,1),教你快速上手数学建模!

    灰色预测之GM(1,1)GM(1,1)GM(1,1),教你快速上手数学建模! 前言:在参加数学建模比赛时经常需要大家做预测,而我们常用的预测模型有回归分析预测模型.自回归移动平均模型.灰色系统预测模型 ...

  6. 15个针对初学者的Python项目创意

    15个适合初学者的Python项目构想-在完成Python编程课程之后,每个初学者都应转向可帮助您发展编码技能的python项目.我知道您在想什么,我们是初学者,我们将如何完成这些python项目?今 ...

  7. 《适用于初学者的 Python》

    halo~ 面向初学者的 Python:一步一步学习 Python 的终极速成课程,包括逐步指导和动手练习 页面页数:146 页 版本版本:1 语言:英语 如果您想在一周(或更短的时间)内学习 Pyt ...

  8. 初学者编写python用什么软件好_初学者编写python用什么软件

    初学者编写python用什么软件 以下是常用的几款Python代码编辑器和Python集成开发工具. 一.Python代码编辑器 1. Sublime Text Sublime Text是一款非常流行 ...

  9. thonny python ide_学习用 Thonny 写代码:一个面向初学者的Python IDE

    原标题:学习用 Thonny 写代码:一个面向初学者的Python IDE 编译自: https://fedoramagazine.org/learn-code-thonny-python-ide-b ...

  10. 初学者python编辑器-分享|Mu 入门:一个面向初学者的 Python 编辑器

    相识 Mu -- 一个可以使学生学习 Python 更轻松的开源编辑器. Mu 是一个给初学者的 Python 编辑器,它旨在使学习体验更加愉快.它使学生​​能够在早期体验成功,这在你学习任何新知识的 ...

最新文章

  1. C语言char*s 4,求讲解几道C语言的题 52 声明语句为“char s[4][15],*p1,**p2;int x,*y;”,下列语句中正...
  2. 简单理解kafka---入门
  3. Python应用实战案例-深入浅出Python随机森林预测实战(附源码)
  4. Java实现线程同步的方式
  5. Boost:prefer的使用测试程序
  6. 多线程爬虫python_一个简单的多线程Python爬虫
  7. java kotlin lateinit_kotlin - 如何检查“lateinit”变量是否已初始化?
  8. idea修改新的git提交地址
  9. 谷歌guava_Google Guava:您永远不会知道的5件事
  10. mysql 排序去重复_php mysql 过滤重复记录并排序
  11. 为什么我喜欢写即时通讯软件呢?
  12. html width设置没用,html style的width不起作用
  13. Java自动化测试框架-09 - TestNG之依赖注入篇 (详细教程)
  14. JavaScript ES5之Object.create函数详解
  15. ArcGIS for Android 中实现要素绘制时固定MapView
  16. ftp常用命令使用方法
  17. c语言char储存字符串,在c语言中char型数据在内存中的储存形式为什么
  18. android是什么意思
  19. 套接字的连接(服务器与客户端一对一的连接)
  20. 奢侈手机品牌,钱途路上的黄粱一梦

热门文章

  1. kali-TheFatRat木马生成工具安装及简单使用
  2. 物联网工程导论笔记一:RFID及二维码技术
  3. 牛逼程序猿的学习之路
  4. 柱坐标系下的流体力学控制方程组的微分形式的推导
  5. 北京天通苑二房东、黑中介
  6. OpenCV+QT5在Window下的环境配置记录
  7. Hamcrest Tutorial
  8. Map集合遍历的四种方式
  9. tp5验证码详细代码
  10. Python定时任务框架APScheduler详解