黑马程序员---三天快速入门Python机器学习(第三天)(下)

简介: 黑马程序员---三天快速入门Python机器学习(第三天)

3 波士顿房价预测


from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge
from sklearn.metrics import mean_squared_error
def linner1():
    """
    正规方程的优化方法
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)
    # 3)标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # 4)预估器
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)
    # 5)得出模型
    print("正规方程权重系数为:\n", estimator.coef_)
    print("正规方程偏置为:\n", estimator.intercept_)
    # 6)模型评估
    y_predict = estimator.predict(x_test)
    print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("正规方程-均分误差为:\n", error)
    return None
def linner2():
    """
    梯度下降的优化方法
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    print("特征数量:\n", boston.data.shape)  # 几个特征对应几个权重系数
    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)
    # 3)标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # 4)预估器
    estimator = SGDRegressor(learning_rate="constant", eta0=0.001, max_iter=10000)
    estimator.fit(x_train, y_train)
    # 5)得出模型
    print("梯度下降权重系数为:\n", estimator.coef_)
    print("梯度下降偏置为:\n", estimator.intercept_)
    # 6)模型评估
    y_predict = estimator.predict(x_test)
    print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("梯度下降-均分误差为:\n", error)
    return None
def linner3():
    """
    岭回归
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    print("特征数量:\n", boston.data.shape)  # 几个特征对应几个权重系数
    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)
    # 3)标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # 4)预估器
    estimator = Ridge(alpha=0.5, max_iter=10000)  # 可默认参数
    estimator.fit(x_train, y_train)
    # 5)得出模型
    print("岭回归-权重系数为:\n", estimator.coef_)
    print("岭回归-下降偏置为:\n", estimator.intercept_)
    # 6)模型评估
    y_predict = estimator.predict(x_test)
    print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("岭回归-均分误差为:\n", error)
    return None
if __name__ == '__main__':
    linner1()
    linner2()
    linner3()



4.4 分类算法–逻辑回归与二分类


学习目标:


  • 说明逻辑回归的损失函数


  • 说明逻辑回归的优化方法


  • 说明sigmoid函数


  • 知道逻辑回归的应用场景


  • 知道精确率、召回率指标的区别


  • 知道F-score指标说明召回率的实际意义


  • 说明如何解决样本不均衡情况下的评估


  • 了解ROC曲线的意义,说明AUC指标大小


  • 应用classificiation_report实现精确率、召回率计算


  • 应用roc_auc_score实现指标计算


4.4.1 逻辑回归的应用场景


  • 广告点击率:是否会被点击


  • 是否为垃圾邮件


  • 是否患病


  • 金融诈骗


  • 虚假账号


  • 以上都是二分类(正例,反例),逻辑回归就是解决二分类的利器


4.4.2 逻辑回归的原理



线性回归的输出就是逻辑回归的输入





3 损失以及优化




2 优化


同样使用梯度下降优化算法,去减少损失函数的值。这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率


4.4.3 逻辑回归API


sklearn.linear_model.LogisticRefression(solver='liblinear', penalty='l2, C=1.0)


  • penalty:正则化种类


  • C:正则化力度


  • solver:优化求解方式(默认开源的liblinear库实现)



4.4.4 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测



流程分析:


1)获取数据:读取的时候加上names


2)数据处理:处理缺失值


3)数据集划分


4)特征工程:无量纲化处理—标准化


5)逻辑回归预估器


6)模型评估


import pandas as pd
import numpy as np
# 1、读取数据
path = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"
column_name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                   'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
                   'Normal Nucleoli', 'Mitoses', 'Class']
data = pd.read_csv(path, names=column_name)  #699 rows × 11 columns
# 2、缺失值处理
# 1)替换-》np.nan
data = data.replace(to_replace="?", value=np.nan)
# 2)删除缺失样本
data.dropna(inplace=True)  #683 rows × 11 columns
# 3、划分数据集
from sklearn.model_selection import train_test_split
# 筛选特征值和目标值
x = data.iloc[:, 1:-1]
y = data["Class"]
x_train, x_test, y_train, y_test = train_test_split(x, y)
# 4、标准化
from sklearn.preprocessing import StandardScaler
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
from sklearn.linear_model import LogisticRegression
# 5、预估器流程
estimator = LogisticRegression()
estimator.fit(x_train, y_train)
# 逻辑回归的模型参数:回归系数和偏置
estimator.coef_   # 权重
estimator.intercept_  # 偏置
# 6、模型评估
# 方法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)


4.4.5 分类的评估方法


1 精确率与召回率


1 混淆矩阵


真的患癌症的,能够被检查出来的概率



2 精确率(Precision)与召回率(Recall)





3 分类评估报告API


sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None)


  • y_true:真实目标值


  • y_pred:估计器预测目标值


  • labels:指定类别对应的数字


  • target_names:目标类别名称


  • return:每个类别精确率与召回率


# 查看精确率、召回率、F1-score
from sklearn.metrics import classification_report
report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"])




衡量样本不均衡下的评估:


2 ROC曲线与AUC指标


TPR就是召回率





4 AUC计算API


from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_score)


  • y_true:每个样本的真实类别,必须为0(反例)和1(正例)


  • y_score:预测得分,可以是正类的估计概率、置信值或者分类器方法的返回值


# y_true:每个样本的真实类别,必须为0(反例),1(正例)标记
# 将y_test 转换成 0 1
y_true = np.where(y_test > 3, 1, 0)
from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_predict)



5 总结


  • AUC只能用来评价二分类


  • AUC非常适合评价样本在不平衡中的分类器性能


4.5 模型保存和加载


学习目标:


  • 应用joblib实现模型的保存于加载


4.5.1 模型的保存和加载API


import joblib


  • 保存:joblib.dump(rf, ‘test.pkl’)


  • 加载:estimator = joblib.load(‘test.pkl’)


4.5.2 线性回归的模型保存加载案例


1、保存模型



2、加载模型



4.6 无监督学习:K-means算法


学习目标:


  • 说明K-means算法原理


  • 说明K-means的性能评估标准轮廓系数


  • 说明K-means的优缺点


什么是无监督学习


没有目标值(无标签)—无监督学习



4.6.2 无监督学习包含算法


聚类:K-means


降维:PCA


4.6.3 K-means原理



4.6.4 K-means API


sklearn.cluster.KMeans(n_cluster=8, init='k-means++')


  • n_clusters:开始聚类中心数量


  • init:初始化方法,默认为‘k-means++’


  • labels_:默认标记的类型,可以和真实值比较(不是值比较)


from sklearn.cluster import KMeans
estimator = KMeans(n_clusters=3)
estimator.fit(data_new)
y_predict = estimator.predict(data_new)



4.6.5 案例:k-means对instacart Market用户聚类


1 分析


  • 1)降维之后的数据


  • 2)预估器流程:k-means聚类


  • 3)聚类结果显示


  • 4)模型评估


4.6.6 K-means性能评估指标


1 轮廓系数



2 轮廓系数值分析



3 结论



4 轮廓系数API


sklearn.metrics.silhouette_score(X, labels)


  • 计算所有样本的平均轮廓系数


  • X:特征值


  • labels:被聚类标记的目标值


from  sklearn.metrics import silhouette_score
silhouette_score(data_new, y_predict)



4.6.7 K-means总结


特点分析:采用迭代式算法,直观易懂并且非常实用


缺点:容易收敛到局部最优解(多次聚类)


注意:聚类一般坐在分类之前



相关文章
|
4天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
113 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
1天前
|
人工智能 程序员 Shell
程序员必知:对比python学julia(第二章)
程序员必知:对比python学julia(第二章)
|
2天前
|
机器学习/深度学习 算法 数据挖掘
Python机器学习10大经典算法的讲解和示例
为了展示10个经典的机器学习算法的最简例子,我将为每个算法编写一个小的示例代码。这些算法将包括线性回归、逻辑回归、K-最近邻(KNN)、支持向量机(SVM)、决策树、随机森林、朴素贝叶斯、K-均值聚类、主成分分析(PCA)、和梯度提升(Gradient Boosting)。我将使用常见的机器学习库,如 scikit-learn,numpy 和 pandas 来实现这些算法。
|
8天前
|
机器学习/深度学习 数据采集 算法
【机器学习】Scikit-Learn:Python机器学习的瑞士军刀
【机器学习】Scikit-Learn:Python机器学习的瑞士军刀
25 3
|
8天前
|
机器学习/深度学习 机器人 Python
实践指南,终于有大佬把Python和机器学习讲明白了!
机器学习正在迅速成为数据驱动型世界的一个必备模块。许多不同的领域,如机器人、医学、零售和出版等,都需要依赖这门技术。 机器学习是近年来渐趋热门的一个领域,同时 Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一。今天给小伙伴们分享的这份手册结合了机器学习和 Python 语言两个热门的领域,通过易于理解的项目详细讲述了如何构建真实的机器学习应用程序。
|
10天前
|
机器学习/深度学习 人工智能 监控
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
23 3
|
1天前
|
程序员 Python
老程序员分享:python爬取电影网站信息并写入文件
老程序员分享:python爬取电影网站信息并写入文件
|
1月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
131 14
|
1月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
50 1

热门文章

最新文章