当前位置: 首页 > news >正文

盐都建设局网站指示灯具网站建设

盐都建设局网站,指示灯具网站建设,邯郸百度网络服务中心,广西建设网网上办事大厅个人版入门kaggle#xff0c;开始机器学习应用之旅。 参看一些入门的博客#xff0c;感觉pandas#xff0c;sklearn需要熟练掌握#xff0c;同时也学到了一些很有用的tricks#xff0c;包括数据分析和机器学习的知识点。下面记录一些有趣的数据分析方法和一个自己撸的小程序。 1…入门kaggle开始机器学习应用之旅。 参看一些入门的博客感觉pandassklearn需要熟练掌握同时也学到了一些很有用的tricks包括数据分析和机器学习的知识点。下面记录一些有趣的数据分析方法和一个自己撸的小程序。   1.Tricks 1) df.info():数据的特征属性包括数据缺失情况和数据类型。     df.describe(): 数据中各个特征的数目缺失值为NaN,以及数值型数据的一些分布情况而类目型数据看不到。     缺失数据处理缺失的样本占总数比例极高则直接舍弃缺失样本适中若为非连续性特征则将NaN作为一个新类别加到类别特征中0/1化若为连续性特征可以将其离散化后把NaN作为新类别加入或用平均值填充。 2数据分析方法将特征分为连续性数据年龄、票价、亲人数目类目数据生存与否、性别、等级、港口文本类数据姓名、票名、客舱名 3数据分析技巧画图、求相关性 画图类目特征分布图特征与生存情况关联柱状图 fig1 plt.figure(figsize(12,10)) # 设定大尺寸后使得图像标注不重叠 fig1.set(alpha0.2) # 设定图表颜色alpha参数plt.subplot2grid((2,3),(0,0)) # 在一张大图里分列几个小图 data_train.Survived.value_counts().plot(kindbar)# 柱状图 plt.title(u获救情况 (1为获救)) # 标题 plt.ylabel(u人数)plt.subplot2grid((2,3),(0,1)) data_train.Pclass.value_counts().plot(kindbar) plt.ylabel(u人数) plt.title(u乘客等级分布)plt.subplot2grid((2,3),(0,2)) plt.scatter(data_train.Survived, data_train.Age) plt.ylabel(u年龄) # 设定纵坐标名称 plt.grid(bTrue, whichmajor, axisy) plt.title(u按年龄看获救分布 (1为获救))plt.subplot2grid((2,3),(1,0), colspan2) data_train.Age[data_train.Pclass 1].plot(kindkde) data_train.Age[data_train.Pclass 2].plot(kindkde) data_train.Age[data_train.Pclass 3].plot(kindkde) plt.xlabel(u年龄)# plots an axis lable plt.ylabel(u密度) plt.title(u各等级的乘客年龄分布) plt.legend((u头等舱, u2等舱,u3等舱),locbest) # sets our legend for our graph. View Code                     以上为3种在一张画布实现多张图的画法 ax1 plt.subplot2grid((3,3), (0,0), colspan3) ax2 plt.subplot2grid((3,3), (1,0), colspan2) ax3 plt.subplot2grid((3,3), (1, 2), rowspan2) ax4 plt.subplot2grid((3,3), (2, 0)) ax5 plt.subplot2grid((3,3), (2, 1)) plt.suptitle(subplot2grid) View Code                        此外还有两种方法等效 fplt.figure() axfig.add_subplot(111) ax.plot(x,y)plt.figure() plt.subplot(111) plt.plot(x,y) View Code 连续性特征分布可以用直方图hist来实现见上图-年龄分布直方图: figure1 plt.figure(figsize(6,6)) value_age train_data[Age] value_age.hist(colorb, alpha0.5) # 年龄分布直方图 plt.xlabel(u年龄) plt.ylabel(u人数) plt.title(u年龄分布直方图) View Code 类目特征与生存关系柱状图见上图-各乘客等级的获救情况 fig2 plt.figure(figsize(6,5)) fig2.set(alpha0.2) Survived_0 data_train.Pclass[data_train.Survived0].value_counts() Survived_1 data_train.Pclass[data_train.Survived1].value_counts() df pd.DataFrame({u获救:Survived_1, u未获救:Survived_0}) df.plot(kindbar, stackedTrue) # stackedFalse时不重叠 plt.title(u各乘客等级的获救情况) plt.xlabel(u乘客等级) plt.ylabel(u人数) plt.show() View Code 各属性与生存率进行关联 eg:舱位和性别 与存活率的关系利用pandas中的groupby函数 Pclass_Gender_groupeddt_train_p.groupby([Sex,Pclass]) #按照性别和舱位分组聚合 PG_Survival_Rate(Pclass_Gender_grouped.sum()/Pclass_Gender_grouped.count())[Survived] #计算存活率 xnp.array([1,2,3]) width0.3 plt.bar(x-width,PG_Survival_Rate.female,width,colorr) plt.bar(x,PG_Survival_Rate.male,width,colorb) plt.title(Survival Rate by Gender and Pclass) plt.xlabel(Pclass) plt.ylabel(Survival Rate) plt.xticks([1,2,3]) plt.yticks(np.arange(0.0, 1.1, 0.1)) plt.grid(True,linestyle-,color0.7) plt.legend([Female,Male]) plt.show() #画图 View Code 可以看到不管是几等舱位都是女士的存活率远高于男士。  将连续性数据年龄分段后画不同年龄段的分布以及存活率 age_train_pdt_train_p[~np.isnan(dt_train_p[Age])] #去除年龄数据中的NaN agesnp.arange(0,85,5) #0~85岁每5岁一段年龄最大80岁 age_cutpd.cut(age_train_p.Age,ages) age_cut_groupedage_train_p.groupby(age_cut) age_Survival_Rate(age_cut_grouped.sum()/age_cut_grouped.count())[Survived] #计算每年龄段的存活率 age_countage_cut_grouped.count()[Survived] #计算每年龄段的总人数 ax1age_count.plot(kindbar) ax2ax1.twinx() #使两者共用X轴 ax2.plot(age_Survival_Rate.values,colorr) ax1.set_xlabel(Age) ax1.set_ylabel(Number) ax2.set_ylabel(Survival Rate) plt.title(Survival Rate by Age) plt.grid(True,linestyle-,color0.7) plt.show() View Code 可以看到年龄主要在15~50岁左右65~80岁死亡率较高后面80岁存活率高是因为只有1人。   相关性分析Parch、SibSp取值少分布不均匀不适合作为连续值来处理。可以将其分段化。这里分析一下Parch和SibSp与生存的关联性 from sklearn.feature_selection import chi2 print(Parch:, chi2(train_data.filter([Parch]), train_data[Survived])) print(SibSp:, chi2(train_data.filter([SibSp]), train_data[Survived])) # chi2Xy X.shape(n_samples, n_features_in) y.shape(n_samples,) # 返回 chi2 和 pval chi2值描述了自变量与因变量之间的相关程度chi2值越大相关程度也越大 # http://guoze.me/2015/09/07/chi-square/ # 可以看到Parch比SibSp的卡方校验取值大p-value小相关性更强。   4数据预处理 PassengerId 舍掉 Pclass为类目属性3类。本身有序的暂时不进行dummy coding Name 为文本属性舍掉暂时不考虑 Sex为类目属性2类。本身无序进行dummy coding Age为连续属性确实较多可以用均值填充。幅度变化大。可以将其以5岁为step进行离散化或利用scaling将其归一化到[-1,1]之间 SibSp为连续属性但比较离散不适合按照连续值处理暂时不用处理。或者可以按照其数量3和3进行dummy coding Parch为连续属性。但比较离散不适合按照连续值处理暂时不用处理。 Ticket为文本属性舍掉暂时不考虑 Fare为连续属性幅度变化大可以利用scaling将其归一化到[-1,1]之间 Cabin为类目属性但缺失严重可以按照是否缺失来0/1二值化进行dummy coding Embarked为类目属性缺失值极少先填充后进行dummy coding  综上可用的数据特征有PclassSexAgeSibSpParchFareCabinEmbarked  此外需注意的是需对训练集和测试集的数据做同样的处理。     2.实例。 根据以上思路一个小baseline诞生了 import pandas as pd import numpy as np import matplotlib.pyplot as plt from pandas import Series, DataFrame from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import classification_report from learning_curve import * from pylab import mpl from sklearn.linear_model import LogisticRegression from sklearn.model_selection import cross_val_score mpl.rcParams[font.sans-serif] [SimHei] #使得plt操作可以显示中文 from sklearn.feature_extraction import DictVectorizerdata_train pd.read_csv(train.csv) data_test pd.read_csv(test.csv)feature [Pclass,Age,Sex,Fare,Cabin,Embarked,SibSp,Parch] # 考虑的特征X_train data_train[feature] y_train data_train[Survived]X_test data_test[feature]X_train.loc[data_train[SibSp]3, SibSp] 1 #按照人数3来划分 X_train.loc[data_train[SibSp]3, SibSp] 0 X_train[Age].fillna(X_train[Age].mean(), inplaceTrue) X_test.loc[data_test[SibSp]3, SibSp]1 X_test.loc[data_test[SibSp]3, SibSp] 0 X_test[Age].fillna(X_test[Age].mean(), inplaceTrue) # 缺失的年龄补以均值 X_test[Fare].fillna(X_test[Fare].mean(), inplaceTrue) # X_train.loc[X_train[Age].isnull(), Age] X_train[Age].mean()dummies_SibSp pd.get_dummies(X_train[SibSp], prefixSibSp) #进行dummy coding dummies_Sex pd.get_dummies(X_train[Sex], prefix Sex) dummies_Pclass pd.get_dummies(X_train[Pclass], prefixPclass) dummies_Emabrked pd.get_dummies(X_train[Embarked], prefixEmbarked)ssStandardScaler()X_train.loc[X_train[Cabin].isnull(), Cabin] 1 X_train.loc[X_train[Cabin].notnull(), Cabin] 0 X_train[Age_new] (X_train[Age]/5).astype(int) X_train[Fare_new] ss.fit_transform(X_train.filter([Fare])) X_train pd.concat([X_train, dummies_Sex, dummies_Pclass, dummies_Emabrked, dummies_SibSp], axis1) X_train.drop([Age, Sex, Pclass, Fare,Embarked, SibSp], axis1, inplaceTrue)dummies_SibSp pd.get_dummies(X_test[SibSp], prefixSibSp) dummies_Sex pd.get_dummies(X_test[Sex], prefix Sex) dummies_Pclass pd.get_dummies(X_test[Pclass], prefixPclass) dummies_Emabrked pd.get_dummies(X_test[Embarked], prefixEmbarked)X_test[Age_new] (X_test[Age]/5).astype(int) X_test[Fare_new] ss.fit_transform(X_test.filter([Fare])) X_test pd.concat([X_test, dummies_Sex, dummies_Pclass, dummies_Emabrked, dummies_SibSp], axis1) X_test.drop([Age, Sex, Pclass, Fare,Embarked,SibSp], axis1, inplaceTrue) X_test.loc[X_test[Cabin].isnull(), Cabin] 1 X_test.loc[X_test[Cabin].notnull(), Cabin] 0dec LogisticRegression() # logistic回归 dec.fit(X_train, y_train) y_pre dec.predict(X_test)# 交叉验证 all_data X_train.filter(regexCabin|Age_.*|Fare_.*|Sex.*|Pclass_.*|Embarked_.*|SibSp_.*_Parch) X_cro all_data.as_matrix() y_cro y_train.as_matrix() est LogisticRegression(C1.0, penaltyl1, tol1e-6) print(cross_val_score(dec, X_cro, y_cro, cv5))# 保存结果 # result pd.DataFrame({PassengerId:data_test[PassengerId].as_matrix(), Survived:y_pre.astype(np.int32)}) # result.to_csv(my_logisticregression_1.csv, indexFalse)# 学习曲线 plot_learning_curve(dec, u学习曲线, X_train, y_train)# 查看各个特征的相关性 columns list(X_train.columns) plt.figure(figsize(8,8)) plot_df pd.DataFrame(dec.coef_.ravel(), indexcolumns) plot_df.plot(kindbar) plt.show()# 分析SibSp # survived_0 data_train.SibSp[data_train[Survived]0].value_counts() # survived_1 data_train.SibSp[data_train[Survived]1].value_counts() # df pd.DataFrame({获救:survived_1, 未获救:survived_0}) # df.plot(kindbar, stackedTrue) # plt.xlabel(兄妹个数) # plt.ylabel(获救情况) # plt.title(兄妹个数与获救情况)# 不加SibSp [ 0.70 0.80446927 0.78651685 0.76966292 0.79661017] # 加上SibSp [ 0.70 0.78212291 0.80337079 0.79775281 0.81355932]# logistic:[ 0.78212291 0.80446927 0.78651685 0.76966292 0.80225989] why?   3.结果分析与总结 1学习曲线函数 import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import learning_curve# 用sklearn的learning_curve得到training_score和cv_score使用matplotlib画出learning curve def plot_learning_curve(estimator, title, X, y, ylimNone, cvNone, n_jobs1,train_sizesnp.linspace(.05, 1., 20), verbose0, plotTrue):画出data在某模型上的learning curve.参数解释----------estimator : 你用的分类器。title : 表格的标题。X : 输入的featurenumpy类型y : 输入的target vectorylim : tuple格式的(ymin, ymax), 设定图像中纵坐标的最低点和最高点cv : 做cross-validation的时候数据分成的份数其中一份作为cv集其余n-1份作为training(默认为3份)n_jobs : 并行的的任务数(默认1)train_sizes, train_scores, test_scores learning_curve(estimator, X, y, cvcv, n_jobsn_jobs, train_sizestrain_sizes, verboseverbose)train_scores_mean np.mean(train_scores, axis1)train_scores_std np.std(train_scores, axis1)test_scores_mean np.mean(test_scores, axis1)test_scores_std np.std(test_scores, axis1)if plot:plt.figure(1)plt.title(title)if ylim is not None:plt.ylim(*ylim)plt.xlabel(u训练样本数)plt.ylabel(u得分)plt.gca().invert_yaxis()plt.grid()plt.fill_between(train_sizes, train_scores_mean - train_scores_std, train_scores_mean train_scores_std,alpha0.1, colorb)plt.fill_between(train_sizes, test_scores_mean - test_scores_std, test_scores_mean test_scores_std,alpha0.1, colorr)plt.plot(train_sizes, train_scores_mean, o-, colorb, labelu训练集上得分)plt.plot(train_sizes, test_scores_mean, o-, colorr, labelu交叉验证集上得分)plt.legend(locbest)plt.draw()plt.show()plt.gca().invert_yaxis()midpoint ((train_scores_mean[-1] train_scores_std[-1]) (test_scores_mean[-1] - test_scores_std[-1])) / 2diff (train_scores_mean[-1] train_scores_std[-1]) - (test_scores_mean[-1] - test_scores_std[-1])return midpoint, diff learning_curve.py 见下图将learning_curve画出可以看到两者在0.8左右趋于平行但是正确率不够高应该是属于欠拟合。所以可以考虑加入新的特征再对特征进行更深的挖掘 。           2特征相关性分析图 columns list(X_train.columns) plt.figure(figsize(8,8)) plot_df pd.DataFrame(dec.coef_.ravel(), indexcolumns) plot_df.plot(kindbar) plt.show() View Code 结果见下图通过logistic学到的参数权重  性别、等级和亲属相关性较强而亲属在前面已经了解到相关性并不强所以可以对这一特征加以优化例如将ParchSibSp作为一个新特征。  其他特征或正相关或负相关但都不太明显。  cabin怎么没有相关性呢   3交叉验证 # 交叉验证 all_data X_train.filter(regexCabin|Age_.*|Fare_.*|Sex.*|Pclass_.*|Embarked_.*|SibSp_.*_Parch) X_cro all_data.as_matrix() y_cro y_train.as_matrix() est LogisticRegression(C1.0, penaltyl1, tol1e-6) print(cross_val_score(dec, X_cro, y_cro, cv5)) View Code 每次通过训练集学习到参数后进行分类但是怎么评价结果的好坏呢可以利用交叉验证来实现根据交叉验证的结果大致可以知道运用于测试集的结果。  这是本次测试的交叉验证结果  [ 0.78212291 0.80446927 0.78651685 0.76966292 0.80225989] 实际提交到Kaggle上时候准确率为0.7751       参考 机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾 机器学习笔记(1)-分析框架-以Kaggle Titanic问题为例 机器学习一小步Kaggle上的练习Titanic: Machine Learning from Disaster一转载于:https://www.cnblogs.com/king-lps/p/7576452.html
http://www.yutouwan.com/news/3239/

相关文章:

  • 电子商务网站建设招标书龙岩kk网手机版
  • 网络平面设计包括哪些郑州搜索引擎优化公司
  • 网站运营需要哪些技术知末设计网官网
  • 单位建设一个网站的费用网站模板 源码之家
  • 鹤壁建设网站推广公司电话jsp网站开发实例与发布
  • 网站建设书籍下载word模板免费下载素材
  • 建设网站cms广昌网站建设制作
  • 重庆网站制作哪家好自己可以开发app软件
  • 手机建立一个免费网站wordpress wpposts
  • 网站维护有哪些企业运营网站开发工作
  • 百度统计网站速度诊断工具合肥住房和城乡建设局
  • 青岛专业网站制作设计怎么选择锦州网站建设
  • 办公室门户网站建设和管理工作php开发的大型金融网站有哪些
  • 滨江网站建设公司广州学习网站建设
  • seo综合查询站长工具怎么用盐田区住房和建设局网站
  • 哪里有网站建设的企业庭院设计效果图
  • 汶上公司网站建设怎么用网站建设
  • 网站域名使用费多少合肥瑶海区医院
  • 谷歌英文网站优化开发网站的流程是
  • 国外做地铁设计的公司网站施工企业资质等级承包范围
  • 网站搭建报价表上海闵行网
  • 内蒙古赤峰市建设局网站单页建站系统
  • 劳保用品 技术支持 东莞网站建设全包圆整体家居体验馆
  • 教育网站制作方案wordpress logo 字体
  • 苏州微网站建设公司哪家好记事本做网站报告
  • 淮安公司网站建设网站 建设 申请
  • 襄阳php网站开发wordpress php代码编辑器
  • 单页网站还能用吗百度推广退款电话
  • 四川住房和城乡建设部官方网站中国旅游网站建设现状及发展趋势分析
  • 公司网站建设哪家公司好做网页网站 的公司