这个流程主要是方便学习数据挖掘的IT人员快速了解数据挖掘的过程以及应该注意的要点

数据来源:Kaggle上有这样一个比赛:城市自行车共享系统使用状况。
https://www.kaggle.com/c/bike-sharing-demand可以下载
有一个博客对这个题目进行了专门的分析,见如下博客,题目分析以及特征的分析:
https://blog.csdn.net/u013795429/article/details/52092659
数据的处理以及特征处理,见如下博客:
https://blog.csdn.net/mlljava1111/article/details/53694055
https://blog.csdn.net/qiujiahao123/article/details/68927616

特征工程与相关算法的融合如下:

#coding=utf-8
import pandas as pd
data = pd.read_csv("train.csv", header = 0,error_bad_lines=False)
# print(data.head())# 把datetime域切成 日期 和 时间 两部分。
temp = pd.DatetimeIndex(data['datetime'])
data['date'] = temp.date
data['time'] = temp.time
# print(data.head())#设定hour这个小时字段
data["hour"] = pd.to_datetime(data.time,format= '%H:%M:%S')
data['hour'] = pd.Index(data["hour"]).hour#我们对时间类的特征处理,产出一个星期几的类别型变量
data["dayofweek"] = pd.DatetimeIndex(data.date).dayofweek#对时间类特征处理,产出一个时间长度变量
data['dateDays'] = (data.date - data.date[0]).astype('timedelta64[D]')#做一个小小的统计来看看真实的数据分布,我们统计一下一周各天的自行车租赁情况(分注册的人和没注册的人
byday = data.groupby(data["dayofweek"])
# 统计下没注册的用户租赁情况
byday['casual'].sum().reset_index()
# 统计下注册的用户的租赁情况
# print(byday['casual'].sum().reset_index())
byday['registered'].sum().reset_index()#周末因为不同于平常,所以周末另外设置一列存储
data['Saturday'] = 0
data.Saturday[data["dayofweek"]==5]=1
data['Sunday'] = 0
data.Sunday[data["dayofweek"]==6]=1
# print(data.head())# 从数据中,把原始的时间字段等踢掉
dataRel = data.drop(['datetime', 'count','date','time','dayofweek'], axis=1)
# print(dataRel.head())# 特征向量化
from sklearn.feature_extraction import DictVectorizer
#将连续值的属性放入一个dict中
featureConCols = ['temp','atemp','humidity','windspeed','dateDays','hour']
dataFeatureCon = dataRel[featureConCols]
# print(dataFeatureCon)
#当数据中存在NaN缺失值时,我们可以用NA替代NaN
dataFeatureCon = dataFeatureCon.fillna('NA')
# 把离散值的属性放到一个dict中
X_dictCon = dataFeatureCon.T.to_dict().values()
# print(X_dictCon)
# print(dataFeatureCon)# 把离散值的属性放到另外一个dict中
featureCatCols = ['season','holiday','workingday','weather','Saturday', 'Sunday']
dataFeatureCat = dataRel[featureCatCols]
# print(dataFeatureCat)
dataFeatureCat = dataFeatureCat.fillna( 'NA' ) #in case I missed any
X_dictCat = dataFeatureCat.T.to_dict().values()
# print(X_dictCat)
# print(dataFeatureCat.head())# 向量化特征,即将上述的编成的特征与数字一一对应,进行组成数组
vec = DictVectorizer(sparse = False)
X_vec_cat = vec.fit_transform(X_dictCat)
# print(X_vec_cat)
X_vec_con = vec.fit_transform(X_dictCon)
# print(X_vec_con)
#
#标准化连续值特征
from sklearn import preprocessing
#标准化连续值数据
scaler = preprocessing.StandardScaler().fit(X_vec_con)
X_vec_con = scaler.transform(X_vec_con)
# print(X_vec_con)#类别特征编码
#最常用的当然是one-hot编码咯,比如颜色 红、蓝、黄 会被编码为[1, 0, 0],[0, 1, 0],[0, 0, 1]
from sklearn import preprocessing
#one-hot编码
enc = preprocessing.OneHotEncoder()
enc.fit(X_vec_cat)
X_vec_cat = enc.transform(X_vec_cat).toarray()
# print(X_vec_cat)# 把特征拼一起
# 把离散和连续的特征都组合在一起
import numpy as np
X_vec = np.concatenate((X_vec_con,X_vec_cat),axis=1)
# print(X_vec)#对结果值也处理一下
# 拿到结果的浮点数值
# 对Y向量化
Y_vec_reg = dataRel['registered'].values.astype(float)
Y_vec_cas = dataRel['casual'].values.astype(float)# print(Y_vec_reg)
# print(Y_vec_cas)Y = data['count'].values
#print(Y)
"""模型训练,主要采用了4种模型进行训练,
1.岭回归、2.支持向量机、3.随机森林、
4.用网格搜索给随机森林找一组参数,然后在用随机森林预测
"""
# 1.岭回归
from sklearn.model_selection import train_test_split
# from sklearn.linear_model import Ridge
from sklearn.linear_model import LinearRegression,Lasso,Ridge,ElasticNet
print("\n1.岭回归")
x_train,x_test,y_train,y_test = train_test_split(X_vec,Y,test_size=0.25,random_state=1)
clf = LinearRegression()
clf.fit(x_train, y_train)
t=clf.predict(x_test)
print(t)
print("y_test:%s"%y_test)
print("训练集准确率:{},测试集准确率:{}".format(clf.score(x_train, y_train),clf.score(x_test, y_test)
))# 2.支持向量机--为什么分类的SVM可以用来做回归
from sklearn.svm import SVR
print("\n2.支持向量机")
clf = SVR(kernel='rbf', C=10, gamma=0.001)
clf.fit(x_train, y_train)
t=clf.predict(x_test)
print(t)
print("y_test:%s"%y_test)
print("训练集准确率:{},测试集准确率:{}".format(clf.score(x_train, y_train),clf.score(x_test, y_test)
))# 3.随机森林
print("\n3.随机森林")
# from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressorclf = RandomForestRegressor(n_estimators=80)
clf.fit(x_train, y_train)
t=clf.predict(x_test)
print(t)
print("y_test:%s"%y_test)
print("训练集准确率:{},测试集准确率:{}".format(clf.score(x_train, y_train),clf.score(x_test, y_test)
))# 4.用网格搜索给随机森林找一组参数,然后在用随机森林预测
print("\n4.用网格搜索给随机森林找一组参数,然后在用随机森林预测")
from sklearn.model_selection import GridSearchCV
params = {"n_estimators":[30,60,90]}
scores = ['r2']
for score in scores:print(score)clf = GridSearchCV(RandomForestRegressor(),params,cv=5,scoring=score)clf.fit(x_train,y_train)print(clf.best_estimator_)clf = RandomForestRegressor(bootstrap=True,criterion='mse',max_depth=None,max_features = "auto",max_leaf_nodes = None,min_impurity_decrease=0.0,min_impurity_split=None,min_samples_leaf=1,min_samples_split=2,min_weight_fraction_leaf =0.0,n_estimators = 90,n_jobs = 1,oob_score=False,random_state = None,verbose=0,warm_start=False)
clf.fit(x_train, y_train)
t=clf.predict(x_test)
print(t)
print("y_test:%s"%y_test)
print("训练集准确率:{},测试集准确率:{}".format(clf.score(x_train, y_train),clf.score(x_test, y_test)
))

结果:

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copydata.Saturday[data["dayofweek"]==5]=1
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copydata.Sunday[data["dayofweek"]==6]=1
[ 16  40  32 ..., 168 129  88]1.岭回归
[ 174.   68.  392. ...,  114.  -70.  -26.]
y_test:[308  14 539 ...,  24  14   8]
训练集准确率:0.39493964089432243,测试集准确率:0.40186701528857862.支持向量机
[ 161.9917164    64.73611511  258.07775507 ...,  106.7790444    -4.7482686326.4338403 ]
y_test:[308  14 539 ...,  24  14   8]
训练集准确率:0.27130138131106696,测试集准确率:0.261836057281756963.随机森林
[ 309.3       6.3375  570.5375 ...,   27.0625   10.125    14.2875]
y_test:[308  14 539 ...,  24  14   8]
训练集准确率:0.9917779365294469,测试集准确率:0.94914085756678284.用网格搜索给随机森林找一组参数,然后在用随机森林预测
r2
RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,max_features='auto', max_leaf_nodes=None,min_impurity_decrease=0.0, min_impurity_split=None,min_samples_leaf=1, min_samples_split=2,min_weight_fraction_leaf=0.0, n_estimators=90, n_jobs=1,oob_score=False, random_state=None, verbose=0, warm_start=False)
[ 304.53333333    7.82222222  565.82222222 ...,   27.72222222   10.9333333313.9       ]
y_test:[308  14 539 ...,  24  14   8]
训练集准确率:0.9918493230582454,测试集准确率:0.950078345686705

算法参考:
https://blog.csdn.net/shawroad88/article/details/87277407
https://blog.csdn.net/wong2016/article/details/87916292不一样的实现,可以看看
gridSearchCV(网格搜索)的参数、方法及示例:
https://blog.csdn.net/weixin_41988628/article/details/83098130
数据挖掘一般流程及模型整理:
https://mp.weixin.qq.com/s/mtU-58ZPW9ruOj7H16zpVQ
https://blog.csdn.net/scheezer/article/details/82794757
参考:
https://blog.csdn.net/mlljava1111/article/details/53694055
https://blog.csdn.net/qq_41185868/article/details/81711462
https://blog.csdn.net/shawroad88/article/details/87277407

数据挖掘流程总结及案例分析相关推荐

  1. 【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )

    文章目录 I . 装饰者模式概念 II . 装饰者模式适用场景 III . 装饰者模式优缺点 IV . 装饰者模式与继承对比 V . 装饰者模式相关设计模式 VI . 装饰者模式四个相关类 VII . ...

  2. 数据挖掘之科比投球案例分析

    为了弥补在特征工程中的不足,学习一下如何从数据获取以后进行数据处理分析,以下为数据处理学习内容: 在学习过程中遇到问题: 原因1:后来发现是学习视频中介绍导包的文件不对,下面这两个都是KFold交叉验 ...

  3. 案例分析 | SAP如何帮助企业实现端到端的数字化供应链管理

    https://www.toutiao.com/a6687387597922107916/ 在我之前的一篇 <收藏 | 供应链管理最佳实践之S&OP> 文章中,为大家介绍了关于S& ...

  4. 清风数学建模学习笔记——系统(层次)聚类原理详解及案例分析

    系统聚类   系统聚类的合并算法通过计算两类数据点间的距离,对最为接近的两类数据点进行组合,并反复迭代这一过程,直到将所有数据点合成一类,并生成聚类谱系图.此外,系统聚类可以解决簇数 K 的取值问题, ...

  5. php 许愿墙 阶段案例_房地产全周期设计管控流程解析及跨部门合作及案例分析...

    时间:2021年1月22-23日 地点:北京 授课专家:高炜 联系人:文雯 手机微信:13264559187 课程前言 房地产市场虽已进入"白银时代",但中国的城市化过程并没有结束 ...

  6. 大数据挖掘建模案例分析:利用BP神经网络算法进行用户行为分析(一)

    泰迪智能科技(数据挖掘平台:TipDM数据挖掘平台)最新推出的数据挖掘实战专栏 专栏将数据挖掘理论与项目案例实践相结合,可以让大家获得真实的数据挖掘学习与实践环境,更快.更好的学习数据挖掘知识与积累职 ...

  7. 员工培训案例分析答案_东海租赁组织开展案例分析和流程优化培训

    2020年9月28日下午,东海融资租赁股份有限公司在月湖金汇大厦21楼会议室组织开展案例分析和流程优化培训,公司前台.中台员工参加,苏州和温州办事处同事通过远程会议系统参加本次培训. 本次培训的主要目 ...

  8. Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(上)

    最近开始接触游戏制作,用Unity制作一些简单的游戏进行入门.这几篇博客总结了Space Shooter的制作流程,并对代码进行了分析.一是方便自己日后进行回顾与补充,二是为了让让更多的游戏爱好者接触 ...

  9. Unity3D案例太空射击(Space Shooter)流程介绍与代码分析(下)

    这部分内容关注的是游戏性的提升,包括音效.计分等功能的实现. 传送门: 太空射击(Space Shooter)流程介绍与代码分析(上) 太空射击(Space Shooter)流程介绍与代码分析(中) ...

最新文章

  1. 又一款4800像素手机曝光:vivo V15 Pro
  2. ajax基本用法介绍
  3. mysql数据库用户管理及日志文件
  4. Exchange 2016证书配置
  5. 农业谋定竞争力-农业大健康·万祥军:质量效益促品牌农业
  6. 爱我少一点,我请求你
  7. 返回指针_C语言面试中的问题指针和引用的使用场景?
  8. 问题 H: 简单的打折计算 山东科技大学OJ C语言
  9. 百家号在线视频编辑器的技术演进
  10. 计算机编程不等于符号,不等于符号(java)
  11. 多轴机械人运动学正逆解,简单粗暴!!!!!!
  12. Easy Data Transform for mac (Excel和CSV编程文件转换工具) v1.11.1激活版
  13. 核芯物联Command ‘cle‘ not found错误处理
  14. Qpython SL4A服务调用GPS定位获取获取位置信息
  15. Ubuntu 18.04 无法自动检测耳机解决方法
  16. Python后端开发(主Django)面试题
  17. [开源项目] 1. EMS
  18. [Video and Audio Data Processing] 截取部分PCM16LE单声道音频采样数据
  19. 【论文速递】“基于自适应辐射环编码柱状图大尺度和旋转不变性的模板匹配”
  20. 攻略来了!2019世界虚拟现实产业大会AR/MR参展指南

热门文章

  1. html编辑器有哪些
  2. Java orm框架的优缺点,ORM框架的简单介绍
  3. 那些是html5新增元素类型,HTML5 元素分类
  4. 基于SSM的JSP MYSQL汽车租赁系统的汽车出租管理系统-mysqljava汽车出租管理系统租车管理系统
  5. pom文件配置阿里云仓库 转
  6. Ai-WB2模组基于TCP的MQTT连接服务器使用示例
  7. Altium Designer 往元件库中添加新元件
  8. 电脑右下角小喇叭出现红色叉号
  9. Hyper-V 2016 系列教程30 机房温度远程监控方案
  10. 期刊投稿状态_期刊投稿后的7种状态,如何应对