python&数据分析&机器学习基础入门
2024-09-16 20:13:01 0 举报
AI智能生成
本人因工作需要,从0开始学习数据分析和机器学习的学习笔记。重点浓缩了《利用python进行数据分析》(第二版、第三版)、《机器学习基础教程》两本书,结合scikit-learn官方文档及其他视频、搜索、实践中整理的知识,按此路径学习可以快速上手应用各基础算法,并了解各种算法在不同场景下的优劣点,可以实际应用解决问题。
作者其他创作
大纲/内容
学习
数据科学概念与应用
将数值\"四舍五入\"到最近的0.5: round(x*2)/2
(a > b) - (a < b)
np.sign
只有0和1的数据集,其均值就是1的占比
一些小技巧
python语法
蓄水池抽样算法(Reservoir Sampling)
数据结构与算法
众数
标准差
正态分布
https://blog.csdn.net/ccnt_2012/article/details/81114920
泊松分布
方差
峰度
偏度
统计
矩阵的维数即行数×列数
向量是一种特殊的矩阵,分为行向量和列向量
矩阵乘向量
矩阵乘矩阵:m x n矩阵乘以n x o矩阵变成m x o矩阵
不满足交换率 A*B != B*A
乘法
单位矩阵(I或者E):左上到右下均为1,其余为为0
逆矩阵:相乘为单位矩阵
线性代数
自然对数
对数
常识
数学
类型一致
多维数组
切片
ndarray
矢量运算
np.nan as NA
随机数生成
合并
ravel
flatten
变成一维数组
np.insert
np.append
np.bincount
np.repeat
np.clip 限定值的范围,将数值约束在一定范围内
方法
应用
计算一个ndarray中True和False的个数,分一维和多维
实践
Numpy
主要属性
read_csv
read_excel
read_json
read_sql
其他接口
其他
read
默认索引
指定索引
列表
字典
创建
s[0]
s['a']
索引访问
s[:4] #返回0-3
s['b':'d'] #返回b、c、d
切片访问
s[s > 1]
布尔访问
访问
values
index.name
传入指定列表重新排序,不能对齐的值为NA
索引自对齐
get_indexer(s2)
index
name
属性
isnull()
rank
unique()
value_counts()
isin
前一行与后一行的差diff()
直接进行加减乘除,作用在每一个元素上
计算
Serise
data
指定索引列,默认为RangeIndex
指定列名,默认为RangeIndex
columns
字典标记
多层索引访问
loc:基于标签label(索引的字面量).loc[0] 0不存在则报错
iloc:基于位置pos(位置的相对index).iloc[0] 取第一行数
位置访问
a=常量
a=序列(长度相同)
a=Serise(会索引对齐,不要求长度相同)
按列赋值:df['col'] = a
del df['col']
删除列
修改
索引
图5.4??
重构索引或插值
reindex
map
axis 默认0每一列;1为每一行
数组级函数映射,Axis指定方向
apply
元素级函数映射
applymap
sort_index
sort_values
重要代码
size
count
分组计数
.transform
.apply
groupby
重命名:rename
idmax
idmin
定位
找存在空值的列:df.isnull().sum().loc[lambda x: x > 0]
找到某行前后行的数据
与Series计算
cumsum
cumcount
累积
mean
sum
函数
pct_change
方差、标准差、协方差、相关系数
DataFrame
时间序列
分组聚合
绘图
pandas
散点图
直方图
matplotlib
基础库
癌症数据集
波士顿房价
数据集
1、数据科学导论
找到缺失值
均值填充
0填充
中位数填充
指定值填充
前后填充
其他算法填充
用同样本同组的非空值填充
各种填充方法适用的场景
填充:data.fillna
Series
删除:data.dropna
缺失值处理
判断重复:duplicated
删除重复:drop_duplicates
重复数据处理
怎么识别?
简单处理
异常值处理
字典映射
替换值
索引替换
数据转换
数据清洗
标准化方法
标准化
归一化
MinMaxScaler
StandardScaler
RobustScaler
Normalizer
方法类
Scikit-learn
特征缩放
80%训练集
20%测试集
数据切分
降维
样例代码
数据平衡
简述
卡方分箱:https://blog.csdn.net/GreenYang5277/article/details/106407874/
分箱\\离散化\\bin
利用无监督学习进行变换
数据预处理
特征种类
特征工程
什么是特征
2、数据预处理与清洗
分类特征/离散特征,字典值映射
数值编码,123
LabelEncoder
pandas 的 get_dummies
sklearn 的 OneHotEncoder
OnehotEncoder虚拟变量
二值特征
离散特征
分箱\\离散\\bin
原始数据+原始数据的分箱
交互特征
多项式回归
多项式特征
log(y + 1)
BOX-COX
对数变换为什么能构造正态分布?
log:降低偏度,构造正态分布
exp
sin\\cos
单变量非线性变换
日期特征
连续特征及其扩展
以后再说
nltk
文本特征
选择固定个数:SelectKBest
选择固定百分比:SelectPercentile
单变量统计(univariate statistics)
线性模型的L1正则
随机森林选择特征
基于模型的选择(model-based selection)
递归特征消除(recursive feature elimination,RFE)
迭代选择(iterative selection)
自动化选择特征
特征重要性评估
eli5
评估一个模型对一个特征有多敏感.
pdpbox
对数变换
WOE (Weight of Evidence)
IV (Information Value)
WOE和IV
特征评估
利用专家知识
先验经验
Granger因果性检验
子主题
时序数据
文章
发现一个强大的库 ydata-profiling
资料
数据探索性分析(EDA)
主成分分析(PCA)
whiten=True 白化是什么?
图像处理
特征提取
PCA
非负矩阵分解(NMF)
t-SNE
可视化
3、特征工程与数据探索
几个简单能找到自信的模型入门
对训练集拟合的函数
假设
描述模型拟合的预测值与训练集实际值之间的差异程度,模型的参数为自变量,误差值(误差的平方和)为应变量
损失函数/代价函数
通过尝试不同的参数组合,使得损失函数的值最小(收敛)
特征缩放到-1和1之间能加快收敛
可以理解为梯度下降每次调整的步长,过小则迭代次数非常高,过大可能导致每次迭代不会减小代价函数,导致无法收敛
学习率
梯度下降
正规方程?
1、丢弃一些特征:PCA
通过引入一个系数,是的模型拟合出来的参数对整体的影响变小
2、正则化
过拟合(overfitting)
欠拟合(underfitting)
泛化(generalize)
二分类
多分类
分类
回归
概念
优点、缺点和参数
K近邻
系数:lr.coef_
截距:lr.intercept_
以下划线结尾的变量是训练出来的结果
解决办法:使用带正则化的模型
容易过拟合
线性回归(普通最小二乘法)
L2正则化
alpha
参数
岭回归
L1正则化
max_iter 最大迭代次数
Lasso
代价函数
原理
简化
emm:
我们要反复更新每个参数,用这个式子来更新,就是用它自己减去学习率α乘以后面的微分项。求导后得到:
如果我们要最小化这个关于θ的函数值,这就是我们通常用的梯度下降法的模板。
正则化系数:C
lbfgs
sag
saga
newton-cg
求解器:solver
l1
l2
惩罚函数:penalty
最大迭代次数:max_iter
一对其余,预测时对多个模型代入x,输出得到值最大的一个分类
Logistic 回归
线性支持向量机
总结
线性模型
速度比线性模型快
泛化能力比线性分类稍差
特征
GaussianNB
BernoulliNB
MultinomialNB
分类器
朴素贝叶斯
可以用于回归
max_depth
max_leaf_nodes
min_samples_leaf
预剪枝
后剪枝/剪枝
export_graphviz
tree.feature_importances_
分析决策树
决策树
n_estimators
max_features
n_jobs=-1
random_state
RandomForestClassifier 没有 decision_function,只有 predict_proba
随机森林(random forest)
learning_rate(学习率)
model.feature_importances_
特征重要性(不叫权重)
超详细解析XGBoost:https://zhuanlan.zhihu.com/p/562983875
XGBoost
决策树集成
树
gamma
C
dual
“一对其余”与决策边界示例
线性支持向量机(LinearSVC)
决策函数:svc.decision_function(X_test)
SVC
svm.LinearSVR
svm.SVR
处理无限多个特征?
核支持向量积(SVM)
先缓缓,学不动了。。。
神经网络
评分(.score)
例子
学习曲线
分类器的不确定度估计
监督学习
无监督变换(unsupervised transformation)
聚类算法(clustering algorithm)
无监督学习
*3
xgboost
*2
GBDT
LightGBM
Bagging
多元回归
卷积神经网络CNN
LSTM
其他一些看到待学习的
ARIMA:https://blog.csdn.net/fengdu78/article/details/121347188
ARIMAX
向量自回归(VAR)https://blog.csdn.net/qq_42374697/article/details/106294970
4、机器学习算法入门
k 折交叉验证(k-fold cross-validation)
分层 k 折交叉验证(stratified k-fold cross-validation)
KFold k折交叉验证(回归模型默认)
StratifiedKFold 分层k折交叉验证(分类默认)
LeaveOneOut 留一法交叉验证
StratifiedShuffleSplit
ShuffleSplit 打乱划分交叉验证
GroupKFold 分组交叉验证
划分方法:交叉验证分离器(cross-validation splitter)
结果取平均
交叉验证:评估泛化能力
for循环多个参数,找到最佳参数组合,存在过拟合泛化性能差的风险
训练集:构建模型
验证集:选择参数
测试集:评估模型
训练集、验证集、测试集
结合交叉验证的网格搜索
基础
默认内核,仅参数变动
内核变动
例:SVC
对分类问题默认使用分层 k 折交叉验证,对回归问题默认使用 k 折交叉验证。
交叉验证(网格搜索(交叉验证()))
嵌套交叉验证(nested cross-validation)
网格搜索热力图
分析交叉验证结果
带交叉验证的网格搜索:GridSearchCV【网格搜索(交叉验证())】
极其耗资源,spark-sklearn分布式执行
使用Pipeline
网格搜索(grid search):找到最佳参数,提升泛化性能
GridSearchCV
cross_val_score
scoring 参数
模型选择时指定评分指标
模型选择
np.mean
knn.score
准确率函数
score
基本精度(accuracy)
正类(positive class)
反类(negative class)
第一类错误(type I error)
假正例(false positive)
第二类错误(type II error)
假反例(false negative)
不平衡数据集(imbalanced dataset)
混淆矩阵怎么看?
准确率(查准率)
召回率(查全率)
f1-分数(f1-score)
分类报告:同时查看准确率、召回和f1
混淆矩阵(confusion matrix)
svc.decision_function
predict_proba
模型校准
准确率 - 召回率曲线(precision-recall curve)
平均准确率
工作点(operating point)
假正例率(false positive rate,FPR)
AUC分数(ROC曲线下的面积)
ROC 曲线(ROC curve)
需要再学习
代价敏感错误率和代价敏感曲线
不确定性与决策阈值调整
精度
热力图
混淆矩阵
分类报告 classification_report
“宏”(macro)平均
“加权”(weighted)平均
“微”(micro)平均
不平衡数据集: f-分数
默认的score方法给出R2评分就够了
评估指标与评分
将特征工程与模型构建为一个pipeline,前一步的输出是下一步的输入,简化代码,减少人为错误,解决网格搜索中的训练集和验证集问题
from sklearn.pipeline import Pipelinepipe = Pipeline([(\"scaler\
利用元组构建
make_pipeline
算法链与管道
5、模型评估与调优
6、深度学习基础
7、实战项目与案例分析
机器学习基础教程:https://www.ituring.com.cn/book/tupubarticle/19667?bookID=1915
笔记:http://www.ai-start.com/ml2014/
视频:https://www.bilibili.com/video/BV164411b7dx
精简笔记:https://zhuanlan.zhihu.com/p/353905922
吴恩达课程
机器学习实战:https://hands1ml.apachecn.org/
机器学习-周志华(西瓜书)
统计学习方法-李航
机器学习
动手深度学习:https://zh.d2l.ai/index.html
https://www.zhihu.com/tardis/zm/art/671160298?source_id=1005
图书
深度学习(花书):https://book.douban.com/subject/27087503/
深度学习
第二版:https://seancheney.gitbook.io/python-for-data-analysis-2nd
第三版:https://wesmckinney.com/book/
利用python进行数据分析
hello算法:https://www.hello-algo.com/
python、数据结构算法
sklearn:https://scikit-learn.org/stable
库
RATH
数据探索工具
常用特征提取方法以及实战方法精讲 https://www.bilibili.com/video/BV1wu4y1z7RA
实践笔记
资料库
收藏
0 条评论
下一页