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)均值替换
创建特征利用监督学习模型预测缺失值
采用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)
使用更复杂的模型不能保证更好的结果。
避免使用复杂的建模技术作为黑盒子而不了解基本概念。这样做会增加过拟合的趋势,从而使模型不可解释
特征工程是成功的关键。
不同的
一: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)
使用更复杂的模型不能保证更好的结果。
避免使用复杂的建模技术作为黑盒子而不了解基本概念。这样做会增加过拟合的趋势,从而使模型不可解释
特征工程是成功的关键。
不同的
相关文章推荐
- 3 个用于数据科学的顶级 Python 库
- 数据科学之5个最佳Python库,为初学者定制的教程
- Python进行数据科学工作的简单入门教程
- Python进行数据科学工作的简单入门教程
- Python数据科学之处理数据工具教程1(Numpy)
- 如何将 Scikit-learn Python 库用于数据科学项目
- Python 数据科学入门教程:TensorFlow 聊天机器人
- Python进行数据科学工作的简单入门教程
- Python 数据科学入门教程:NLTK
- Python 数据科学入门教程:TensorFlow 目标检测
- Python 数据科学入门教程:OpenCV
- Python 数据科学入门教程:机器学习:回归
- Python 数据科学入门教程:Pandas
- Python 数据科学入门教程:Matplotlib
- Python数据科学之处理数据工具教程2(Pandas前篇)
- 3个用于数据科学的顶级Python库
- python数据分析准备(安装python和canopy用于科学计算)
- Python教程:连接数据库,对数据进行增删改查操作
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- python教程1:Python基础之数据类型和变量、字符串和编码