目录

1 sklearn转换器和估计器

1.1 转换器

1.2 估计器

2 K-近邻算法(KNN)

2.1 案例1——鸢尾花种类预测

3 模型选择与调优

3.1 什么是交叉验证(cross validation)

3.2 超参数搜索-网格搜索(Grid Search)

3.2.1 模型选择与调优

3.3 案例2——预测facebook签到位置

4 朴素贝叶斯算法

4.1 拉普拉斯平滑系数

5 决策树

5.1 信息熵、信息增益

5.2 案例3——用决策树对鸢尾花进行分类

5.3 案例4——泰坦尼克号乘客生存预测

6 随机森林


本篇博文将对sklearn的转换器和估计器流程、sklearn的分类、回归数据集、K-近邻算法的距离公式、K-近邻算法的超参数K值以及取值问题、K-近邻算法的优缺点、应用KNeighborsClassifier实现分类、了解分类算法的评估标准准确率、说明朴素贝叶斯算法的原理、说明朴素贝叶斯算法的优缺点、应用MultinomialNB实现文本分类、应用模型选择与调优、说明决策树算法的原理、说明决策树算法的优缺点、应用DecisionTreeClassifier实现分类、说明随机森林算法的原理、说明随机森林算法的优缺点以及应用RandomForestClassifier实现分类 。

1 sklearn转换器和估计器

1.1 转换器

特征工程步骤如下:

  • 1、实例化 (实例化的是一个转换器类(Transformer))
  • 2、调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)

我们把特征工程的接口称之为转换器,其中转换器调用有这么几种形式:

  • fit--->计算
  • transform--->转换
  • fit_transform--->计算+转换

我们用代码演示一下这几种形式的区别:

from sklearn.preprocessing import StandardScalera = [[7,8,9], [10, 11, 12]]
std1 = StandardScaler()
print("fit:\n",std1.fit(a))
print("transform:\n",std1.transform(a))
print("fit_transform:\n",std1.fit_transform(a))

运行结果如下:

fit:StandardScaler()
transform:[[-1. -1. -1.][ 1.  1.  1.]]
fit_transform:[[-1. -1. -1.][ 1.  1.  1.]]

从中可以看出,fit_transform的作用相当于transform加上fit。

1.2 估计器

在sklearn中,估计器(estimator)是一个重要的角色,是一类实现了算法的API:

  • 1、用于分类的估计器:

    • sklearn.neighbors k-近邻算法
    • sklearn.naive_bayes 贝叶斯
    • sklearn.linear_model.LogisticRegression 逻辑回归
    • sklearn.tree 决策树与随机森林
  • 2、用于回归的估计器:
    • sklearn.linear_model.LinearRegression 线性回归
    • sklearn.linear_model.Ridge 岭回归
  • 3、用于无监督学习的估计器
    • sklearn.cluster.KMeans 聚类

工作流程:

估计器:

1 实例化一个estimator

2 estimator.fit(x_train,y_train)计算--->调用完毕,模型生成

3 模型评估:

1)直接比对真实值和预测值

y_predict = estimator.predict(x_test)

y_test == y_predict

2)计算准确率

accuracy = estimator.score(x_test,y_test)

2 K-近邻算法(KNN)

定义:

如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

那么如何确定谁是邻居呢?

距离公式:

欧式距离、曼哈顿距离、明科夫斯基距离等。欧式距离计算公式如下:

假设我们有现在几部电影:

其中?号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想。

如果取的最近的电影数量不一样?会是什么结果?

k=1 爱情片(取距离最近的1个样本,该样本为爱情片,所以为爱情片)。

k=2 爱情片(取距离最近的2个样本,该样本为爱情片,所以为爱情片)。

...

k=6 无法确定(取距离最近的6个样本,该样本中3个爱情片,3个动作片,最终无法确定)。

k=1 容易受到异常点的影响。

k取值过大,受到样本不均衡的影响。

K-近邻算法API:

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm='auto')

  • n_neighbors:int,可选(默认= 5),k_neighbors查询默认使用的邻居数
  • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},可选用于计算最近邻居的算法:‘ball_tree’将会使用 BallTree,‘kd_tree’将使用 KDTree,‘auto’将尝试根据传递给fit方法的值来决定最合适的算法。 (不同实现方式影响效率)

2.1 案例1——鸢尾花种类预测

用knn算法对鸢尾花进行分类:

1、获取数据

2、数据集划分

3、特征工程:标准化

4、KNN算法预估器

5、模型评估:

1)直接比对真实值和预测值

2)计算准确率

代码如下:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
def knn_iris():"""用knn算法对鸢尾花进行分类:return:"""# 1、获取数据iris = load_iris()# 2、数据集划分x_train, x_test, y_train, y_test = train_test_split(iris.data,iris.target,random_state=6)# 3、特征工程:标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test) #训练集fit,测试集不fit,因为实际我们不知道要分类的未知数据,所以标准化的平均值和标准差只能用测试集的# 4、KNN算法预估器estimator = KNeighborsClassifier(n_neighbors=3)estimator.fit(x_train,y_train)# 5、模型评估# 1)直接比对真实值和预测值y_predict = estimator.predict(x_test)print("y_predict:\n",y_predict)print("直接比对真实值和预测值:\n", y_test == y_predict)# 2)计算准确率score = estimator.score(x_test, y_test)print("准确率:\n",score)return Noneif __name__ == "__main__":#代码:用knn算法对鸢尾花进行分类knn_iris()

运行结果如下:

y_predict:[0 2 0 0 2 1 1 0 2 1 2 1 2 2 1 1 2 1 1 0 0 2 0 0 1 1 1 2 0 1 0 1 0 0 1 2 12]
直接比对真实值和预测值:[ True  True  True  True  True  True False  True  True  True  True  TrueTrue  True  True False  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True False  TrueTrue  True]
准确率:0.9210526315789473

总结:

  • 1、k值取多大?有什么影响?

k值取很小:容易受到异常点的影响

k值取很大:受到样本均衡的问题

  • 2、性能问题?

距离计算上面,时间复杂度高

  • 优点:

    • 简单,易于理解,易于实现,无需训练
  • 缺点:
    • 懒惰算法,对测试样本分类时的计算量大,内存开销大
    • 必须指定K值,K值选择不当则分类精度不能保证
  • 使用场景:小数据场景,几千~几万样本,具体场景具体业务去测试

3 模型选择与调优

3.1 什么是交叉验证(cross validation)

交叉验证:将拿到的训练数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。

为什么需要交叉验证?--->为了让被评估的模型更加准确可信。

那么这个只是对于参数得出更好的结果,那么怎么选择或者调优参数呢?

3.2 超参数搜索-网格搜索(Grid Search)

通常情况下,有很多参数是需要手动指定的(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。

3.2.1 模型选择与调优

sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)

  • 对估计器的指定参数值进行详尽搜索
  • estimator:估计器对象
  • param_grid:估计器参数(dict){“n_neighbors”:[1,3,5]}(字典类型)
  • cv:指定几折交叉验证
  • fit:输入训练数据
  • score:准确率
  • 结果分析:
  • 最佳参数:best_params_
  • 最佳结果:best_score_
  • 最佳预估器:best_estimator_
  • 交叉验证结果:cv_results_

下面,我们用knn算法对鸢尾花进行分类,并添加网格搜索和交叉验证。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
def knn_iris_gscv():"""用knn算法对鸢尾花进行分类,添加网格搜索和交叉验证:return:"""# 1、获取数据iris = load_iris()# 2、数据集划分x_train, x_test, y_train, y_test = train_test_split(iris.data,iris.target,random_state=6)# 3、特征工程:标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test) #训练集fit,测试集不fit,因为实际我们不知道要分类的未知数据,所以标准化的平均值和标准差只能用测试集的# 4、KNN算法预估器estimator = KNeighborsClassifier()#加入网格搜索与交叉验证#参数准备param_dict = {"n_neighbors":[1,3,5,7,9,11]}estimator = GridSearchCV(estimator,param_grid=param_dict,cv=10)estimator.fit(x_train,y_train)# 5、模型评估# 1)直接比对真实值和预测值y_predict = estimator.predict(x_test)print("y_predict:\n",y_predict)print("直接比对真实值和预测值:\n", y_test == y_predict)# 2)计算准确率score = estimator.score(x_test, y_test)print("准确率:\n",score)# 最佳参数:best_params_print("最佳参数:\n", estimator.best_params_)# 最佳结果:best_score_print("最佳结果:\n", estimator.best_score_)# 最佳预估器:best_estimator_print("最佳预估器:\n", estimator.best_estimator_)# 交叉验证结果:cv_results_print("交叉验证结果:\n", estimator.cv_results_)return Noneif __name__ == "__main__":#代码:用knn算法对鸢尾花进行分类,添加网格搜索和交叉验证knn_iris_gscv()

运行结果如下:

y_predict:[0 2 0 0 2 1 2 0 2 1 2 1 2 2 1 1 2 1 1 0 0 2 0 0 1 1 1 2 0 1 0 1 0 0 1 2 12]
直接比对真实值和预测值:[ True  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True False  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True False  TrueTrue  True]
准确率:0.9473684210526315
最佳参数:{'n_neighbors': 11}
最佳结果:0.9734848484848484
最佳预估器:KNeighborsClassifier(n_neighbors=11)
交叉验证结果:{'mean_fit_time': array([0.00086534, 0.00059962, 0.00075936, 0.00080037, 0.00040061,0.00049934]), 'std_fit_time': array([0.00133643, 0.00048959, 0.00050251, 0.00040019, 0.00049067,0.00049935]), 'mean_score_time': array([0.00142319, 0.00120194, 0.0012007 , 0.0014998 , 0.0012012 ,0.00159819]), 'std_score_time': array([0.00062137, 0.00039834, 0.00039953, 0.00050006, 0.00039969,0.00066429]), 'param_n_neighbors': masked_array(data=[1, 3, 5, 7, 9, 11],mask=[False, False, False, False, False, False],fill_value='?',dtype=object), 'params': [{'n_neighbors': 1}, {'n_neighbors': 3}, {'n_neighbors': 5}, {'n_neighbors': 7}, {'n_neighbors': 9}, {'n_neighbors': 11}], 'split0_test_score': array([1., 1., 1., 1., 1., 1.]), 'split1_test_score': array([0.91666667, 0.91666667, 1.        , 0.91666667, 0.91666667,0.91666667]), 'split2_test_score': array([1., 1., 1., 1., 1., 1.]), 'split3_test_score': array([1.        , 1.        , 1.        , 1.        , 0.90909091,1.        ]), 'split4_test_score': array([1., 1., 1., 1., 1., 1.]), 'split5_test_score': array([0.90909091, 0.90909091, 1.        , 1.        , 1.        ,1.        ]), 'split6_test_score': array([1., 1., 1., 1., 1., 1.]), 'split7_test_score': array([0.90909091, 0.90909091, 0.90909091, 0.90909091, 1.        ,1.        ]), 'split8_test_score': array([1., 1., 1., 1., 1., 1.]), 'split9_test_score': array([0.90909091, 0.81818182, 0.81818182, 0.81818182, 0.81818182,0.81818182]), 'mean_test_score': array([0.96439394, 0.95530303, 0.97272727, 0.96439394, 0.96439394,0.97348485]), 'std_test_score': array([0.04365767, 0.0604591 , 0.05821022, 0.05965639, 0.05965639,0.05742104]), 'rank_test_score': array([5, 6, 2, 3, 3, 1])}

3.3 案例2——预测facebook签到位置

数据介绍:将根据用户的位置,准确性和时间戳预测用户正在查看的业务。

train.csv,test.csv
row_id:登记事件的ID
xy:坐标
准确性:定位准确性
时间:时间戳
place_id:业务的ID,这是您预测的目标

数据来源:官网:grid_knn | Kaggle

分析:

  • 对于数据做一些基本处理(这里所做的一些处理不一定达到很好的效果,我们只是简单尝试,有些特征我们可以根据一些特征选择的方式去做处理)

    • 1、缩小数据集范围 DataFrame.query()

    • 4、删除没用的日期数据 DataFrame.drop(可以选择保留)

    • 5、将签到位置少于n个用户的删除

      place_count = data.groupby('place_id').count()

      tf = place_count[place_count.row_id > 3].reset_index()

      data = data[data['place_id'].isin(tf.place_id)]

  • 分割数据集

  • 标准化处理

  • k-近邻预测

首先,用knn算法:

df.query():

pandas41 query-字符串表达式查询:大数据函数( tcy)_tcy23456的博客-CSDN博客_pandas query 字符串

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifierdef knncls():"""K近邻算法预测入住位置类别:return:"""# 一、处理数据以及特征工程# 1、读取收,缩小数据的范围data = pd.read_csv("F:/BaiduNetdiskDownload/mechine learning/Machine_Learning/resources/FBlocation/train.csv")# 数据逻辑筛选操作 df.query()data = data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")# 删除time这一列特征data = data.drop(['time'], axis=1)print(data)# 删除入住次数少于三次位置place_count = data.groupby('place_id').count()tf = place_count[place_count.row_id > 3].reset_index()data = data[data['place_id'].isin(tf.place_id)]# 3、取出特征值和目标值y = data['place_id']x = data.drop(['place_id', 'row_id'], axis=1)# 4、数据分割与特征工程?# (1)、数据分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)# (2)、标准化std = StandardScaler()# 队训练集进行标准化操作x_train = std.fit_transform(x_train)print(x_train)# 进行测试集的标准化操作x_test = std.fit_transform(x_test)# 二、算法的输入训练预测# K值:算法传入参数不定的值    理论上:k = 根号(样本数)# K值:后面会使用参数调优方法,去轮流试出最好的参数[1,3,5,10,20,100,200]knn = KNeighborsClassifier(n_neighbors=1)# 调用fit()knn.fit(x_train, y_train)# 预测测试数据集,得出准确率y_predict = knn.predict(x_test)print("预测测试集类别:", y_predict)print("准确率为:", knn.score(x_test, y_test))return Noneif __name__ == "__main__":#代码:用knn算法对鸢尾花进行分类,添加网格搜索和交叉验证knncls()

运行结果如下:

            row_id       x       y  accuracy    place_id
600            600  1.2214  2.7023        17  6683426742
957            957  1.1832  2.6891        58  6683426742
4345          4345  1.1935  2.6550        11  6889790653
4735          4735  1.1452  2.6074        49  6822359752
5580          5580  1.0089  2.7287        19  1527921905
...            ...     ...     ...       ...         ...
29100203  29100203  1.0129  2.6775        12  3312463746
29108443  29108443  1.1474  2.6840        36  3533177779
29109993  29109993  1.0240  2.7238        62  6424972551
29111539  29111539  1.2032  2.6796        87  3533177779
29112154  29112154  1.1070  2.5419       178  4932578245[17710 rows x 5 columns]
[[ 0.83245563 -1.74343908  0.05714877][ 0.52915898  0.49524962 -0.13620476][-0.85122962  0.69993791 -0.15461938]...[ 0.09495224 -1.37557271 -0.14541207][ 0.46175972  0.93897948 -0.56894839][ 0.52397442 -0.82448886  2.92062257]]
预测测试集类别: [5161681408 1097200869 3533177779 ... 2584530303 6237569496 6683426742]
准确率为: 0.40070921985815605

其次,预测K值调优,我们将会在jupyter中进行运算:

  • 使用网格搜索估计器
  • 流程分析:
  • 1、获取数据
  • 2、数据处理 目的: 特征值 x 目标值 y
  • a.缩小数据范围 2<x<2.5 1.0<y<1.5
  • b.time->年月日时分秒
  • 3、特征工程:标准化
  • 4、KNN算法预估流程
  • 5、模型选择与调优
  • 6、模型评估

pd.to_datetime:

python的时间转换datetime和pd.to_datetime_-永不妥协-的博客-CSDN博客_python to_datetime

pd.to_datetime()_Kwoky的博客-CSDN博客_pd.to_datetime用法

import pandas as pd
#1、获取数据
data = pd.read_csv("F:/BaiduNetdiskDownload/mechine learning/Machine_Learning/resources/FBlocation/train.csv")#2、基本数据处理
#1)缩小数据范围
data = data.query("x < 2.5 & x >2 & y< 1.5 & y > 1.0") # 数据逻辑筛选操作 df.query()
#2)处理时间特征
time_value = pd.to_datetime(data["time"],unit="s")
date = pd.DatetimeIndex(time_value)
data["day"] = date.day
data["weekday"] = date.weekday
data["hour"] = date.hour
#3)过滤签到次数少的地点
place_count = data.groupby("place_id").count()["row_id"]
#data.groupby("place_id").count() #统计数量
#place_count[place_count > 3].head()
data_final = data[data["place_id"].isin(place_count[place_count > 3].index.values)]
#筛选目标值和特征值
x = data_final[["x","y","accuracy","day","weekday","hour"]]
y = data_final["place_id"]
#数据集划分
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y)from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV# 3、特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test) #训练集fit,测试集不fit,因为实际我们不知道要分类的未知数据,所以标准化的平均值和标准差只能用测试集的
# 4、KNN算法预估器
estimator = KNeighborsClassifier()
#加入网格搜索与交叉验证
#参数准备
param_dict = {"n_neighbors":[3,5,7,9]}
estimator = GridSearchCV(estimator,param_grid=param_dict,cv=3)
estimator.fit(x_train,y_train)
# 5、模型评估
# 1)直接比对真实值和预测值
y_predict = estimator.predict(x_test)
print("y_predict:\n",y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)
# 2)计算准确率
score = estimator.score(x_test, y_test)
print("准确率:\n",score)
# 最佳参数:best_params_
print("最佳参数:\n", estimator.best_params_)
# 最佳结果:best_score_
print("最佳结果:\n", estimator.best_score_)
# 最佳预估器:best_estimator_
print("最佳预估器:\n", estimator.best_estimator_)
# 交叉验证结果:cv_results_
print("交叉验证结果:\n", estimator.cv_results_)

运行结果如下:

y_predict:[1540382716 3229876087 2852927300 ... 6706708436 1327075245 5632997879]
直接比对真实值和预测值:14668111    False
27343822     True
15103904    False
1073508     False
22672114    False...
25579756    False
14532786     True
20000562     True
8492671     False
819453       True
Name: place_id, Length: 20228, dtype: bool
准确率:0.36607672533122404
最佳参数:{'n_neighbors': 7}
最佳结果:0.33528883188596975
最佳预估器:KNeighborsClassifier(n_neighbors=7)
交叉验证结果:{'mean_fit_time': array([0.10567093, 0.08900865, 0.08966986, 0.09933988]), 'std_fit_time': array([0.01061762, 0.00245127, 0.00589601, 0.00680692]), 'mean_score_time': array([1.00040642, 0.98540219, 1.09007986, 1.15351415]), 'std_score_time': array([0.04896799, 0.01601261, 0.03288546, 0.08910883]), 'param_n_neighbors': masked_array(data=[3, 5, 7, 9],mask=[False, False, False, False],fill_value='?',dtype=object), 'params': [{'n_neighbors': 3}, {'n_neighbors': 5}, {'n_neighbors': 7}, {'n_neighbors': 9}], 'split0_test_score': array([0.3230176 , 0.33789796, 0.33839233, 0.3321139 ]), 'split1_test_score': array([0.32367627, 0.33395956, 0.33252583, 0.3277797 ]), 'split2_test_score': array([0.32347852, 0.33351461, 0.33494834, 0.3322292 ]), 'mean_test_score': array([0.3233908 , 0.33512404, 0.33528883, 0.3307076 ]), 'std_test_score': array([0.00027596, 0.00196985, 0.00240706, 0.00207087]), 'rank_test_score': array([4, 2, 1, 3])}

4 朴素贝叶斯算法

条件概率与联合概率:

  • 联合概率:包含多个条件,且所有条件同时成立的概率

    • 记作:P(A,B)
    • 特性:P(A, B) = P(A)P(B)
  • 条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
    • 记作:P(A|B)
    • 特性:P(A1,A2|B) = P(A1|B)P(A2|B) 注意:此条件概率的成立,是由于A1,A2相互独立的结果

我们通过一个例子,来计算一些结果:

这样我们计算结果为:

p(程序员, 匀称) =  P(程序员)P(匀称) =3/7*(4/7) = 12/49
P(产品, 超重|喜欢) = P(产品|喜欢)P(超重|喜欢)=1/2 *  1/4 = 1/8

朴素贝叶斯如何分类,这个算法经常会用在文本分类,那就来看文章分类是一个什么样的问题?

这个了类似一个条件概率,那么仔细一想,给定文章其实相当于给定什么?结合前面我们将文本特征抽取的时候讲的?所以我们可以理解为

但是这个公式怎么求?前面并没有参考例子,其实是相似的,我们可以使用贝叶斯公式去计算 。

贝叶斯公式:

 那么这个公式如果应用在文章分类的场景当中,我们可以这样看:

公式分为三个部分:

  • P(C):每个文档类别的概率(某文档类别数/总文档数量)
  • P(W│C):给定类别下特征(被预测文档中出现的词)的概率
    • 计算方法:P(F1│C)=Ni/N (训练文档中去计算)

      • Ni为该F1词在C类别所有文档中出现的次数
      • N为所属类别C下的文档所有词出现的次数和
  • P(F1,F2,…) 预测文档中每个词的概率
  • 假设我们从训练数据集得到如下信息

  • 计算结果
科技:P(科技|影院,支付宝,云计算) = 												

机器学习(18)——分类算法(补充)相关推荐

  1. [Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. 机器学习分类算法_达观数据:5分钟带你理解机器学习及分类算法

    1.本文介绍内容:什么是机器学习,机器学习有哪些分类算法,分类算法之k-近邻,决策树,随机森林2.本文适合人群:本文通过通俗易懂的语言和例子介绍核心思想,不拽高大上的名词,适合于不懂机器学习的小白3. ...

  3. 15 分钟带你入门 sklearn 与机器学习(分类算法篇)

    众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库.它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-me ...

  4. Sklearn 损失函数如何应用到_15 分钟带你入门 sklearn 与机器学习(分类算法篇)...

    众所周知,Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库.它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-me ...

  5. 机器学习3—分类算法之K邻近算法(KNN)

    K邻近算法(KNN) 一.算法思想 二.KNN类KNeighborsClassifier的使用 三.KNN分析红酒类型 3.1红酒数据集 3.2红酒数据的读取 3.3将红酒的数据集拆分为训练和测试集 ...

  6. 机器学习经典分类算法 —— C4.5算法(附python实现代码)

    目录 理论介绍 什么是分类 分类的步骤 什么是决策树 决策树归纳 信息增益 相关理论基础 计算公式 ID3 C4.5 python实现 参考资料 理论介绍 什么是分类 分类属于机器学习中监督学习的一种 ...

  7. 【机器学习】分类算法-K-近邻算法

    目标 说明K-近邻算法的距离公式 说明K-近邻算法的超参数K值以及取值问题 说明K-近邻算法的优缺点 应用KNeighborsClassifier实现分类 了解分类算法的评估标准准确率 应用:Face ...

  8. 机器学习:分类算法SVM(支持向量机)

    支持向量机(Support Vector Machine ,SVM)的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力.对于 ...

  9. 机器学习5—分类算法之随机森林(Random Forest)

    随机森林(Random Forest) 前言 一.随机森林 1.什么是随机森林 2.随机森林的特点 3.随机森林的生成 二.随机森林的函数模型 三.随机森林算法实现 1.数据的读取 2.数据的清洗和填 ...

  10. 机器学习-决策树分类算法与应用

    1. 决策树分类算法原理 1.1 概述 决策树(decision tree)--是一种被广泛使用的分类算法. 相比贝叶斯算法,决策树的优势在于构造过程不需要任何领域知识或参数设置 在实际应用中,对于探 ...

最新文章

  1. Tomcat异常退出
  2. 基于OpenCV的findContours查找图像连通域,并进行排序
  3. How to check table locks
  4. PHPStorm开启Debug
  5. bzoj3129 [Sdoi2013]方程 容斥+扩展lucas
  6. mongodb之mongostat 的字段含义解析
  7. UVA10493 Cats, with or without Hats【组合】
  8. 指令重排序导致的可见性问题
  9. 2018科大讯飞AI营销算法大赛总结(冠军)
  10. 注册表应用100例—注册表使用全攻略之十一
  11. 力软框架java_力软敏捷框架 jfGrid 使用例子之一
  12. DataFormatString格式
  13. Hadoop集群搭建(六):hadoop配置namenode服务
  14. 用AD9画51单片机的最小系统
  15. 模2除法与二进制除法
  16. 学期总结(思维导图)
  17. leetcode 算法题575 (简单147) 罗马数字转整数
  18. Mac电脑使用Charles抓取Android手机app的包
  19. 字节还能如何“跳动”
  20. 使用七牛的sdk上传报错:incorrect region

热门文章

  1. 带参宏定义和带参函数的区别
  2. 【手把手带你Godot游戏开发】FlappyBird:4.1无限地面之Godot青年(AnimationPlayer)版
  3. 近期微信登录10005报错,解决办法
  4. 宝真酒业:借助用友U8cloud数智化转型,小集团也能“小而美”
  5. 【解决笔记本黑屏问题】
  6. 【第84期】对话智能风控
  7. 一文带你快速了解 Java 线上问题快速诊断神器 Arthas
  8. 五个最好的压缩软件下载
  9. css中textarea去掉边框和取消选中后的边框
  10. DxO PhotoLab for Mac(照片编辑软件)