机器学习算法API汇总
sklearnAPI1. K-近邻算法1.读取数据1.1sklearn.datasetsdatasets.load_* —读取较小数据datasets.fetch_* — 读取较大的数据参数:subset = “”,train,test,all可选,选择要加载的数据集返回值:datasets.base.Bunch(字典格式)data:特征数据数组,是 [n_samples * n_features
sklearnAPI
1. K-近邻算法
1.读取数据
1.1sklearn.datasets
- datasets.load_* — 读取较小数据
- datasets.fetch_* — 读取较大的数据
- 参数:subset = “ ”,train,test,all可选,选择要加载的数据集
- 返回值:datasets.base.Bunch(字典格式)
- data:特征数据数组,是 [n_samples * n_features] 的二维 numpy.ndarray 数组
- target:标签数组,是 n_samples 的一维 numpy.ndarray 数组
- DESCR:数据描述
- feature_names:特征名,新闻数据,手写数字、回归数据集没有
- target_names:标签名
2.数据预处理
2.1 数据集划分
sklearn.model_selection.train_test_split(arrays, *options)
- 参数:
- x 数据集的特征值
- y 数据集的标签值
- test_size 测试集的大小,一般为float
- random_state 随机数种子,不同的种子会造成不同的随机采样结果。相同的种子采样结果相同。
- return
- x_train, x_test, y_train, y_test
2.2 缩小数据范围
2.3 时间特征处理
-
有时候时间以计算机标准时间格式出现,有时候需要转换成日期加时间的格式
- time = pd.to_datetime(facebook_data[“time”], unit=“s”)
time = pd.DatetimeIndex(time)
facebook_data[“day”] = time.day
facebook_data[“hour”] = time.hour
facebook_data[“weekday”] = time.weekday
- time = pd.to_datetime(facebook_data[“time”], unit=“s”)
3.特征预处理
3.1 归一化
-
sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
- MinMaxScalar.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
- 使用步骤
- 使用Min Max Scaler()实例化一个对象 transfer
- transfer.fit_transform
3.2 标准化
- MinMaxScalar.fit_transform(X)
-
sklearn.preprocessing.StandardScaler( )
- 处理之后每列来说所有数据都聚集在均值0附近标准差差为1
- StandardScaler.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后的形状相同的array
-
使用步骤
- 使用StandardScaler()实例化一个对象 transfer
- transfer.fit_transform
4. 机器学习(模型训练)
4.1 K-近邻算法API
-
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘auto’)
- n_neighbors:
- int,可选(默认= 5),k_neighbors查询默认使用的邻居数
- algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’}
- 快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,
- brute是蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。
- kd_tree,构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。
- ball tree是为了克服kd树高维失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。
- 快速k近邻搜索算法,默认参数为auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法ball_tree、kd_tree、brute方法进行搜索,
- n_neighbors:
-
用法
-
1.实例化对象模型
- estimator = KNeighborsClassifier(n_neighbors=9)
-
2.模型训练
- estimator.fit(x_train, y_train)
-
4.2 交叉验证
交叉验证目的:为了让被评估的模型更加准确可信
-
交叉验证,网格搜索(模型选择与调优)
- sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
- 对估计器的指定参数值进行详尽搜索
- estimator:估计器对象
- param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}
- cv:指定几折交叉验证
- fit:输入训练数据
- score:准确率
- 结果分析:
- bestscore__:在交叉验证中验证的最好结果
- bestestimator:最好的参数模型
- cvresults:每次交叉验证后的验证集准确率结果和训练集准确率结果
- sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
-
实例
-
4、KNN预估器流程 # 4.1 实例化预估器类 estimator = KNeighborsClassifier() # 4.2 模型选择与调优——网格搜索和交叉验证 # 准备要调的超参数 param_dict = {"n_neighbors": [1, 3, 5]} estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3) # 4.3 fit数据进行训练 estimator.fit(x_train, y_train)
-
5. 模型评估
5.1 查看预测结果数据
-
查看预测值 y_predict = estimator.predict(x_test)
-
查看交叉验证中最好的结果:
-
estimator.best_score_
-
-
最好的参数模型 estimator.best_estimator_
-
每次交叉验证后的准确率结果 estimator.cv_results_
5.2 直接计算准确率
-
score = estimator.score(x_test, y_test)
2. 线性回归
1.数据读取
2.数据预处理
3.特征预处理
4.模型训练
4.1 线性回归-正规方程API
适用于小规模数据
-
sklearn.linear_model.LinearRegression()
-
LinearRegression.coef_:回归系数
-
实例
-
# 实例化API estimator = LinearRegression() # 使用fit方法进行训练 estimator.fit(x,y) estimator.coef_ estimator.predict([[100, 80]])
-
4.2 梯度下降–SGDRegressor
sklearn.linear_model.SGDRegressor(loss=“squared_loss”, fit_intercept=True, learning_rate =‘invscaling’, eta0=0.01)
- SGDRegressor类实现了随机梯度下降学习,它支持不同的loss函数和正则化惩罚项来拟合线性回归模型。
- 参数:
- loss:损失类型
- loss=”squared_loss”: 普通最小二乘法
- fit_intercept:是否计算偏置
- learning_rate : string, optional
- 学习率填充
- ’constant’: eta = eta0
- ’optimal’: eta = 1.0 / (alpha * (t + t0)) [default]
- ‘invscaling’: eta = eta0 / pow(t, power_t)
- power_t=0.25:存在父类当中
- 对于一个常数值的学习率来说,可以使用learning_rate=’constant’ ,并使用eta0来指定学习率。
- loss:损失类型
- 属性:
- SGDRegressor.coef_:回归系数
- SGDRegressor.intercept_:偏置
4.3 全梯度下降–FG
4.4 随机梯度下降–SG
4.5 小批量梯度下降
4.6 随机梯度下降
5.模型评估
5.1 MSE–均方误差
- sklearn.metrics.mean_squared_error(y_true, y_pred)
- 均方误差回归损失
- y_true:真实值
- y_pred:预测值
- return:浮点数结果
3. 逻辑回归
1.数据读取
2.数据预处理
3.特征预处理
4.模型训练
5.模型评估
4. 决策树算法
1.数据读取
2.数据预处理
3.特征预处理
3.1特征提取
- sklearn.feature_extraction
3.2 字典特征提取
- sklearn.feature_extraction.DictVectorizer(sparse=True,…)
- DictVectorizer.fit_transform(X)
- X:字典或者包含字典的迭代器返回值
- 返回sparse矩阵
- DictVectorizer.get_feature_names() 返回类别名称
- DictVectorizer.fit_transform(X)
3.3 文本特征提取
3.3.1 英文文本特征提取
- sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
- 返回词频矩阵
- CountVectorizer.fit_transform(X)
- X:文本或者包含文本字符串的可迭代对象
- 返回值:返回sparse矩阵
- CountVectorizer.get_feature_names() 返回值:单词列表
- sklearn.feature_extraction.text.TfidfVectorizer
3.3.2 中文问题特征提取
- pip install jieba
- jieba.cut(“data”): 返回的是一个对象格式的,要使用list()转换成列表形式
- 再用 “ ”.join(list) 进行分词
4.模型训练
-
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
- criterion
- 特征选择标准
- “gini"或者"entropy”,前者代表基尼系数,后者代表信息增益。一默认"gini",即CART算法。
- min_samples_split
- 内部节点再划分所需最小样本数
- 这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。我之前的一个项目例子,有大概10万样本,建立决策树时,我选择了min_samples_split=10。可以作为参考。
- min_samples_leaf
- 叶子节点最少样本数
- 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。之前的10万样本项目使用min_samples_leaf的值为5,仅供参考。
- max_depth
- 决策树最大深度
- 决策树的最大深度,默认可以不输入,如果不输入的话,决策树在建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间
- random_state
- 随机数种子
- criterion
-
estimator = DecisionTreeClassifier(criterion="entropy", max_depth=5) estimator.fit(x_train, y_train)
5.模型评估
5.1
5. 聚类算法
API:
- sklearn.cluster.KMeans(n_cluster=8)
- 参数:
- n_clusters:开始的聚类中心数量
- 整型,缺省值=8,生成的聚类数,即产生的质心(centroids)数。
- n_clusters:开始的聚类中心数量
- 方法:
- estimator.fit(x)
- estimator.predict(x)
- estimator.fit_predict(x)
- 计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x),然后再调用predict(x)
- 参数:
5.2 特征工程 – 降维
5.2.1 降维的两种方式
特征选择,主成分分析
5.2.2 特征选择的方法
- 过滤,filter
- 嵌入式
5.2.3 低方差特征过滤
- sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
- 删除所有低方差特征
- Variance.fit_transform(X)
- X:numpy array格式的数据[n_samples,n_features]
- 返回值:训练集差异低于threshold的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征。
5.2.4 皮尔逊相关系数
from scipy.stats import pearsonr
- x : (N,) array_like
- y : (N,) array_like Returns: (Pearson’s correlation coefficient, p-value)
- 实例:pearsonr(x1, x2)
5.2.5 斯皮尔曼相关系数
from scipy.stats import spearmanr
-
实例:
spearmanr(x1, x2)
5.2.6 主成分分析
- 将数据维度压缩,相关性较高的两个特征拟合成一个
- sklearn.decomposition.PCA(n_components=None)
- 将数据分解为较低维数空间
- n_components:
- 小数:表示保留百分之多少的信息
- 整数:减少到多少特征
- PCA.fit_transform(X) X:numpy array格式的数据[n_samples,n_features]
- 返回值:转换后指定维度的array
更多推荐
所有评论(0)