sklearn机器学习&数据建模

sklearn机器学习&数据建模小结

fancy 20210407

数据分析和数据挖掘领域,简单的分析可通过基本统计方法完成,需要复杂的建模就
可以采用机器学习算法进行建模分析
机器学习就是通过学习来获得进行预测和判断的能力

机器学习方法的重要理论基础之一是统计学,基于统计学习理论,在自然语言处理、
语音识别、图像识别、信息检索和生物信息等许多计算机领域获得了广泛应用

1.基本思路

1.1导入数据

目的:数据的导入来自本地的存储或者是hadoop存储
提供可供分析的大量样本数据

pd.read_table #文本文件
pd.read_csv #读取csv文件

1.2数据描述性分析

目的:描述性分析对数据进行大致的概括,对确定其分布区间,数据缺失情况,特征数量 等进行初步的感知

a_data.info()
a_data.describe()

1.3 数据预处理

目的:为了保证特征的有效选取,以及方便建模处理,排除异常值和缺失值的干扰

  1. 数据合并:合并数据(堆叠合并,主键合并)

    pd.concat()
    pd.merge()
    
  2. 清洗数据:缺失值(删除-dropna,替换-fillna,插值-scipy)

    异常值(3σ原则,箱线图分析)

    df.isnull()/notnull()
    df.dropna()
    df.fillna()
    
    linear=scipy.interp1d(x, y, kind='linear')#线性插值器
    ys = linear(xs)
    # 'zero', 'slinear', 'quadratic', 'cubic' 分别是:阶梯插值 线性插值 二阶曲线插值 三阶曲线插值
    # 如果样本数据一定程度上符合正态分布可以使用3西格玛原则,
    # 大部分情况使用箱线图的异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值。   
    
  3. 标准化数据:离差标准化(0-1之间),标准差标准化(平均值为0,标准差为1的符合标准正态分布的数据)

    df_norm=(df-df.min())/(df.max()-df.min())
    df_norm1=(df-df.mean())/(df.std())
    
  4. 转换数据:数值型转换为类别型(分到不同区间-cut函数,直方图)

    类别型转换为数值型(0-1编码-get_dummies,根据数据进行数字编码)

    pd.cut()
    pandas.get_dummies()
    

1.4 构建特征模型

目的:在预处理的基础上,通过对数据***进行探索性的分析***(相关性,透视图,分组聚合等),来尽可能的筛选出对预测结果有较大影响的特征,往往还需要结合实际的业务场景
特征的构建并不固定,根据实际要解决的问题来筛选数据质量好而且有较大可能影响结果的特征

# 直接使用现有特征
使用原数据中的现有特征
# 构建新特征
在探索原数据的原有特征上,对某几个特征进行提炼,总结特征与特征之间的关系并通过一些运算来总结出新的特征

1.5 构建模型并训练

确认建模的目标

在构建模型之前需要确认需求来选择合适的算法,需求的确认通常是在拿到样本数据之前就确定好的.
机器学习的应用:分类 聚类 回归

分类(classification)
有监督学习(数据带有标签)
分类方法是一种对离散型随机变量建模或预测的监督学习算法,结果必定是离散的
分类算法通常适用于预测一个类别(或类别的概率)而不是连续的数值
聚类(clustering)
无监督学习的结果(数据没有标注)。聚类的结果将产生一组集合,集合中的对象与同集合中的对象彼此相似,与其他集合中的对象相异。
聚类技术主要是以统计方法、机器学习、神经网络等方法为基础。比较有代表性的聚类技术是基于几何距离的聚类方法

例如 支持向量机svm 决策树 逻辑回归 随机森林 k-means
回归 Regression
回归是根据已有数值(行为)预测未知数值(行为)的过程,与分类模式分析不
同,预测分析更侧重于“量化”。一般认为,使用回归方法预测连续或有序值

例如 LogisticRegression

参考 https://blog.csdn.net/wdr2003/article/details/80248162

建模代码思路

# 1对数据划分训练集和测试集 聚类则不需要
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size = 0.3,random_state=123)
# 2选择合适的算法进行训练 生成模型对象(这里以决策树解决分类问题为例)
from sklearn import tree
clf = tree.DecisionTreeClassifier(criterion='entropy', #--设置衡量的系数
                                    max_depth=4, #--设置树的最大深度
                                    min_samples_split=10,#--节点的最少样本数
                                    min_samples_leaf=5 #-- 叶节点的最少样本数
                                    )
# 3训练好模型对象(使用训练集)
clf = clf.fit(x_train,y_train) # -- 拟合训练
# 4测试训练结果(使用测试集)
y_pred=clf.predict(x_test)
#  5验证模型准确率
预测正确样本数量/测试集样本总数量

#  6参数调优(仅以树深度为例)
# 构建一个函数,使用不同的深度来训练模型,并计算评分数据
def cv_score(d):
    clf2=tree.DecisionTreeClassifier(max_depth=d)
    clf2=clf2.fit(x_train,y_train)
    # 训练集分数    
    tr_score=clf2.score(x_train,y_train)
    # 测试集分数  
    cv_score=clf2.score(x_test,y_test)
    return (tr_score,cv_score)
# 构造参数范围 选择准确率最高的深度
depths=range(2,15)
scores=[cv_score(d) for d in depths]
scores

1.6 输出结果

在聚类和分类的问题中,需要将模型输出的分类数组重新映射回原数据

# 得到所用客户的标签
kmeans_model.labels_   #array([4, 4, 4, ..., 3, 0, 3], dtype=int32)
# 保存不同客户类别的数目 将分类标签映射回原数据
airline_features['label']=kmeans_model.labels_
airline_features.head()

在回归问题中,需要输入新的样本数据来让模型做出预测.

2.小结

重点在于数据预处理 和 模型算法的理解
某些算法也可解决多种问题,比如逻辑回归也可以解决分类问题
模型算法的理解 支持向量机svm 决策树 逻辑回归 随机森林 k-means

其次需要补充统计学知识
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值