本课程是以项目为主线引导学员学习掌握Pandas发的常用知识点的项目,自己已经连续做了4遍;基本上掌握了这些基本知识。
从本项目的完成过程来看,就数据分析的流程而言,分以下几步:
一、读取文件;
导包: import as
pd.read_csv('文件名'); df.to_csv('文件名');os.getcwd(),os.path.abspath('文件名')
df.columns = ['列名', '列名'……], pd.read_csv('文件名', names=['列名','列名', '列名'……]
二、观察数据,包括个字段名称、性质、是否有空值、是否有重复值、是否有明显不符合相关维度性质的值等等;总之,一方面观察数据是什么,他们之间有什么联系;另一方面观察数据是否异常,有哪些异常;
df.info(), df.describe(), df.isnull(), df.duplicated(),
三、数据处理
1、数据清洗,补空、去重以及将不适合的值一般化;
df.fillna({'列名': 0}), df.drop_duplicates(),unique(),
df.['列名'].replace(['文本值1', '文本值2'], [数值1,数值2], inplace=True)
from sklearn.preprocessing import LabelEncoder
df['Cabin'] = LabelEncoder().fit_transform(df['Cabin'])
LabelEncoder().fit_tranform()这个函数的算法应用范围应该庭广的,后面把具体算法学习一下;
2、重构数据,包括将文本值变为数值、连接文件、删除数据、数据离散化、Title提取等等;
pd.concat(df1, df2, axis=1/0), df1.join(df2), df.append(df2), pd.merge(df1, df2, left=True, right=True)
3、根据需求提取相关数据;这里会频繁用到Groupby(用法和MySQL的用法比较像;这种对数据的操作方法在Excel中也会经常用到)
df.groupby('列名')['列名'].方法/函数, agg({'列名’: ‘函数名’, ‘列名': '函数名', ……})
rename(columns = {'旧列名':'新列名', 旧列名':'新列名'……}), mean(), sum(),to_frame(),
4、数据可视化,这里会用到Matplotlib, seaborn
plt.plot(), plot.bar(), hist(bins=),stack(),unstack(), plot.density()
import seaborn as sns
for i in unique_pclass:
sns.kdeplot(df.Age[df.Pclass == i],shade = True, linewidth = 0)
如果是做数据分析工作的话接下来就应该做数据分析了,比如通过对不同性别、不同客舱等级、不同年龄段的生还人数进行比较得到一些与提高生还率相关的因素;以及可以多想想为什么女性的平均票价要远高于男性,生还率也高于男性,为什么有很多人的票价是0等等。
一个推测,数据几种很大一部分男性是船员,不需要买票,而在当时女性能得到的工作机会很少,能独自出远门坐轮船的一般妇女更是少之又少,所以出现在数据集中的女性大多应该是随家庭乘船,有一定比例的家庭是富裕家庭,购买的船票是较贵的船票,也就是更高等客舱的船票,所以平均下来女性的平均票价要高于男性,生还率也高于男性(施救的次序也是以由高等级仓位到低等级仓位的顺序施救)。
除了可以分析数据之间的关联性以外还可以分析一下数据产生的背景,看看这些数据和其他更广大的数据集是否有一定的相关性……其中是否有更深刻、更一般的规律;
四、模型搭建与预测
1、明确模型的任务:泰坦尼克号的存活预测;
2、明确模型采取监督学习模式还是无监督学习模式;
3、除了考虑以上两点外,还要考虑数据量和样本特征的稀疏性;
4、先用一个选一个普通模型训练作为效果参照基线,接下来以此为基础训练泛化能力更强或性能更好的模型;
5、综上考虑,先试用sklearn库用于模型搭建;
6、使用留出法划分训练接和测试集,将数据集划分为自变量和因变量按2:1的比例将数据集切割为训练集和测试集;使用分层抽样,设置随机种子,使结果可以复现。
这里用到 sklearn.model_selection 中的train_test_split方法,顾名思义,就是“切割训练集测试集”
7、接下来是创建模型
基于线性模型的分类模型LogisticRegression(逻辑回归)
基于树的分类模型RandomForestClassifier(随机森林)
查看模型的参数,更改参数,观察模型变化
8、输出模型预测分类标签,以及不同分类标签的预测概率;
9、模型评估
用10折交叉验证来评估之前的逻辑回归模型;
计算交叉验证精度的平均值;
用混淆矩阵confusion_matrix计算精确率,召回率;
绘制ROC曲线,评估最优点。
总的来说是越做越有意思,但是模型创建和评估的部分离我目前的状况还有一点距离,等我把前面一般的数据处理知识吃透了,慢慢学习这部分知识。