快速入门Python机器学习(十)

简介: 快速入门Python机器学习(十)

6.2 K邻近回归算法(KNeighbors Regressor)


class sklearn.neighbors.KNeighborsRegressor(n_neighbors=5, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None, **kwargs)


参数


参数

解释

n_neighbors

int, optional (默认= 5),默认情况下用于kneighbors查询的邻居数。

algorithm

 : {'auto','ball_tree','kd_tree','brute'}, optional。用于计算最近邻居的算法:

'ball_tree' 用于BallTree

'kd_tree'用于KDTree

'brute'用于强力搜查.

'auto'将尝试根据传递给fit方法的值来决定最合适的算法

注意:使用强力拟合稀疏输入将覆盖此参数的设置。


属性


属性

解释

effective_metric_

str or callable要使用的距离度量。如果度量参数设置为'minkowski'p参数设置为2,则它将与度量参数或其同义词相同,例如'euclidean'。度量函数的其他关键字参数。

effective_metric_params_

dict对于大多数度量,都将与metric_params参数相同,但如果metric_params属性设置为'minkowski',则也可能包含p参数值。

n_samples_fit_

int拟合数据中的样本数


方法


方法

解释

fit(X, y)

从训练数据集中拟合k近邻回归。

get_params([deep])

获取此估计器的参数。

kneighbors([X, n_neighbors, return_distance])

找到点的K邻域。

kneighbors_graph([X, n_neighbors, mode])

计算X上点的k邻域(加权)图

predict(X)

根据提供的数据预测目标

score(X, y[, sample_weight])

返回预测的确定系数R2

set_params(**params)

设置此估计器的参数。


6.2.1 K邻近算法分析无噪音make_regression数据集

def KNeighborsRegressor_for_make_regression():
    myutil = util()
    X,y = make_regression(n_samples=100,n_features=1,n_informative=2,random_state=8)
    X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
    clf = KNeighborsRegressor().fit(X,y)
    title = "K邻近算法分析make_regression数据集(无噪音)"
    myutil.draw_line(X[:,0],y,clf,title)
    myutil.plot_learning_curve(KNeighborsRegressor(),X,y,title)
    myutil.show_pic(title)

image.png

image.png


6.2.2 K邻近算法分析有噪音make_regression数据集

def KNeighborsRegressor_for_make_regression_add_noise():
    myutil = util()
    X,y = make_regression(n_samples=100,n_features=1,n_informative=2,noise=50,random_state=8)
    X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
    clf = KNeighborsRegressor().fit(X,y)
    title = "K邻近算法分析make_regression数据集(有噪音)"
    myutil.draw_line(X[:,0],y,clf,title)
    myutil.plot_learning_curve(KNeighborsRegressor(),X,y,title)
    myutil.show_pic(title)

image.png

image.png


6.2.2 K邻近算法分析乳腺癌数据集

def KNeighborsRegressor_for_for_diabetes():
    myutil = util()
    X,y = datasets.load_diabetes().data,datasets.load_diabetes().target
    X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
    clf = KNeighborsRegressor().fit(X_train,y_train)
    title = " K邻近回归算法分析糖尿病数据数据"
    myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
    myutil.plot_learning_curve(KNeighborsRegressor(),X,y,title)
    myutil.show_pic(title)


输出:

K邻近回归算法分析糖尿病数据:
60.66%
K邻近回归算法分析糖尿病数据:
38.87%


看来,用这个方法分析糖尿病数据是非常差的。

image.png


6.2.4 K邻近算法分析波士顿房价数据集

def KNeighborsRegressor_for_for_boston():
    myutil = util()
    X,y = datasets.load_boston().data,datasets.load_boston().target
    X_train,X_test,y_train,y_test = train_test_split(X, y, random_state=8,test_size=0.3)
    clf = KNeighborsRegressor().fit(X_train,y_train)
    title = " K邻近回归算法分析波士顿房价数据"
    myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
    myutil.plot_learning_curve(KNeighborsRegressor(),X,y,title)
    myutil.show_pic(title)


输出

K邻近回归算法分析波士顿房价数据:
71.71%
K邻近回归算法分析波士顿房价数据:
45.91%


看来,用这个方法分析波士顿房价数据是也非常差的


7 朴素贝叶斯


7.1 概念

天气预报有雨P(A):50%、堵车概率P(B): 80%、下雨后堵车概率P(A|B): 40%;那么堵车后下雨的概率P(B|A)是多少,根据朴素贝叶斯定律:


P(A|B) = P(A) · P(B|A) / P(B)

其中:P (A)> P(A|B)、 P (B)> P(B|A)


P(B|A)= P(B) · P(A|B) / P(A)=50%·40%/80%=25%

看看我们如何用Python来实现朴素贝叶斯定律


7.2 用Python程序来实现

一周 [1,0,0,1,0,1,0]下情况,1表示下雨,0表示不下雨。[1,0,0,1,0,1,0]表示周1、4、6下雨,周2、3、5、日不下雨。下面我们改进下。


[1,1,0,1],表示一天内的数据,第1个数据表示是否刮风:1刮,0不刮;第2个数据表示是否闷热:1闷,0不闷;第3个数据表示是否多云:1多云,0不是多云表示和第4个数据表示预报有雨:1预报有雨,0预报没雨。所以[1,1,0,1]表示刮风、闷热、不是多云且预报有雨。[[1,1,0,1],[0,1,1,0],[1,0,0,1],[0,1,0,0],[1,0,1,0],[0,1,0,0],[0,0,1,0]]这个是一周内的实际数据,我们用X来表示。


X=[[1,1,0,1],[0,1,1,0],[1,0,0,1],[0,1,0,0],[1,0,1,0],[0,1,0,0],[0,0,1,0]]


用y值表示实际是否下雨了


y=[1,1,0,0,1,0,1]


def my_BernoulliNB():
        X = np.array([[1,1,0,1],[0,1,1,0],[1,0,0,1],[0,1,0,0],[1,0,1,0],[0,1,0,0],[0,0,1,0]])
        y = np.array([1,1,0,0,1,0,1])
        counts={}
        for label in np.unique(y):
                counts[label] = X[y==label].sum(axis=0)
        print("特性统计:\n{}".format(counts))


输出:

特性统计:
{0: array([1, 2, 0, 1]), 1: array([2, 2, 3, 1])}


说明

实际没雨的日子:1天刮风,2天闷热,0天多云,1天预报有雨

实际下雨的日子:2天刮风,2天闷热,3天多云,1天预报有雨


clf = BernoulliNB()
        clf.fit(X,y)
        #明天多云
        Next_Day = [[0,0,1,0]]
        pre1 = clf.predict(Next_Day)
        print(pre1)
        #另一天刮风、闷热、预报有雨
        Another_Day = [[1,1,0,1]]
        pre2 = clf.predict(Another_Day)
        print(pre2)
        print(clf.predict_proba(Next_Day))
        print(clf.predict_proba(Another_Day))

输出


[1]
[0]
[[0.16275954 0.83724046]]
[[0.67464862 0.32535138]]

说明


第一天有雨 没雨概率16%,有雨概率84%

第二条没有雨 没雨概率67%,有雨概率32%

目录
相关文章
|
5天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
16 3
|
10天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
20 1
|
16天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
21天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
【10月更文挑战第12天】本文介绍了如何使用Python和Scikit-learn进行机器学习的基础知识和入门实践。首先概述了机器学习的基本概念,包括监督学习、无监督学习和强化学习。接着详细讲解了Python和Scikit-learn的安装、数据处理、模型训练和评估等步骤,并提供了代码示例。通过本文,读者可以掌握机器学习的基本流程,并为深入学习打下坚实基础。
16 1
|
22天前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
18 2
|
6月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
233 14
|
6月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
113 1
|
6月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
6月前
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
299 0
|
6月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
874 0