您的位置:首页 > 编程语言 > Python开发

python用于数据科学教程

2017-08-10 11:52 330 查看
此博文是对原文的一个理解和知识点整理(个人理解可能有误),只是方便以后快速查阅。不是对原文的完全翻译,原文详细链接点击打开链接

一:python数据分析基础

二:python库和数据结构

三:pandas用于数据探索

(1)导入库

(2)读入数据:pd.read_csv()

(3)查看:

df.head() 大致查看数据前几行,了解内容

df.describe() 计数,平均值,中位数,偏差等  可以基本看出缺失值和平均值和中位数了解数据偏差

(4)对于非数值型查看频率分布  Series.value_counts()

(5)研究各种变量的分布:

Series.hist() 直方图

df.boxplot(column='') 盒图

df.boxplot(column='B',by='A')通过A取值分割 画B的盒图

df.pivot_table() 透视表

pd.crosstab(df['A'],df['B']).plot(kind='bar',stacked=True,color=[],grid=) 堆叠图表

四:pandas用于数据整理

(1)处理缺失值

df.apply(lambda x:sum(x.isnull()),axis = 0)了解各列的缺失值   



.fillna(df ['A'].mean(),inplace = True)均值替换

创建特征利用监督学习模型预测缺失值



df['A'].fillna(众数,inplace=True) 如果分布差别特别明显,则填补很多的那类更保险
若发现C的取值与AB取值组合有明显关系:统计AB取值众数,对应查看该用户的AB决定C
table = df.pivot_table(values='C', index='A' ,columns='B', aggfunc=np.median)
def fage(x):
return table.loc[x['A'],x['B']]
df['C'].fillna(df[df['C'].isnull()].apply(fage, axis=1), inplace=True
table = df.pivot_table(values='LoanAmount', index='Self_Employed' ,columns='Education', aggfunc=np.median)
# Define function to return value of this pivot_table
def fage(x):
return table.loc[x['Self_Employed'],x['Education']]
# Replace missing values
df['LoanAmount'].fillna(df[df['LoanAmount'].isnull()].apply(fage, axis=1), inplace=True)

(2)处理异常值:不切实际的值

对于明显偏离的值但是实际中有可能存在的,不应该视为异常值:

采用log转换,消除影响 df['a']=np.log(df['a'])  hist()查看效果

增加和值特征

增加比例特征


五:用Python构建一个预测模型

sklearn要求所有输入都是数字的,所以我们应该通过对类别进行编码,将所有的分类变量转换为数值

sklearn.preprocessing.LabelEncoder     model.fit_transform(df[''])

sklearn.cross_validation.KFold


编写一个通用的函数

def classification_model(model,data,feature,label):

       model.fit(data[feature],data[label])

      predictions=model.predict(data[feature])

      accuracy=merics.accuracy_score(predictions,data[label])

      print 'auuracy:%s' % '{0:.3%}'.format(accuracy)

      .........

[b]不同的特征选择,不同的模型尝试[/b]

当测试集上准确度提高但是交叉验证得分降低,说明过拟合。需要减少特征量(查看重要特征排序,取前几个),调整模型参数

pd.Series(model.feature_importances_,index =之前特征量).sort_values(ascending = False)




使用更复杂的模型不能保证更好的结果。
避免使用复杂的建模技术作为黑盒子而不了解基本概念。这样做会增加过拟合的趋势,从而使模型不可解释
特征工程是成功的关键。

























不同的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: