拥抱人工智能--机器学习(附python代码)

本文深入探讨了机器学习中的多种算法,包括线性回归、逻辑回归、K-近邻、朴素贝叶斯、决策树、支持向量机、K-means,并通过实例展示了如何使用Python进行实现。此外,还提到了Anaconda作为Python和机器学习初学者的优秀工具。
摘要由CSDN通过智能技术生成

机器学习简述

加入了代码,如果不想看代码请直接跳过,这不会产生任何影响

文章来自于云栖社区,修改及补充了一些内容,增添了代码

认识人工智能,还需要理清几个概念之间的关系:人工智能是一个大的概念,是让机器像人一样思考甚至超越人类;而机器学习是实现人工智能的一种方法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测;深度学习是机器学习的一种实现方式,通过模拟人神经网络的方式来训练网络;而统计学是机器学习和神经网络的一种基础知识。
在这里插入图片描述
机器学习最大的特点是利用数据而不是指令来进行各种工作,其学习过程主要包括:数据的特征提取、数据预处理、训练模型、测试模型、模型评估改进等几部分。接下来我们重点介绍机器学习过程中的常见算法。
在这里插入图片描述

机器学习算法:是使计算机具有智能的关键

算法是通过使用已知的输入和输出以某种方式“训练”以对特定输入进行响应。代表着用系统的方法描述解决问题的策略机制。人工智能的发展离不开机器学习算法的不断进步。 机器学习算法可以分为传统的机器学习算法和深度学习。传统机器学习算法主要包括以下五类:
• 回归:建立一个回归方程来预测目标值,用于连续型分布预测
• 分类:给定大量带标签的数据,计算出未知标签样本的标签取值
• 聚类:将不带标签的数据根据距离聚集成不同的簇,每一簇数据有共同的特征
• 关联分析:计算出数据之间的频繁项集合
• 降维:原高维空间中的数据点映射到低维度的空间中
在这里插入图片描述

下面我们将选取几种常见的算法,一一介绍。

1. 线性回归:找到一条直线来预测目标值

一个简单的场景:已知房屋价格与尺寸的历史数据,问面积为2000时,售价为多少?
在这里插入图片描述
此类问题可以用回归算法来解决。回归是指确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,通过建立一个回归方程(函数)来估计特征值对应的目标变量的可能取值。 最常见的是线性回归(Y= a X + b),即找到一条直线来预测目标值。回归的求解就是求解回归方程的回归系数(a,b)的过程,并且使误差最小。 房价场景中,根据房屋面积和售价的关系,求出回归方程,则可以预测给定房屋面积时的售价。
在这里插入图片描述
线性回归的应用非常广泛,例如:
预测客户终生价值: 基于老客户历史数据与客户生命周期的关联关系,建立线性回归模型,预测新客户的终生价值,进而开展针对性的活动。
机场客流量分布预测: 以海量机场WiFi数据及安检登机值机数据,通过数据算法实现机场航站楼客流分析与预测。
货币基金资金流入流出预测: 通过用户基本信息数据、用户申购赎回数据、收益率表和银行间拆借利率等信息,对用户的申购赎回数据的把握,精准预测未来每日的资金流入流出情况。
电影票房预测: 依据历史票房数据、影评数据、舆情数据等互联网公众数据,对电影票房进行预测。

线性回归运用简单举例
  • 输入:[[0, 0], [1, 1], [2, 2]]——两个输入
  • 输出:[0, 1, 2]
  • 预测:[3, 3]
from sklearn.linear_model import LinearRegression
 '''
LinearRegression 的常用方法有: decision_function(X)
#返回 X 的预测值 y fit(X,y[,n_jobs]) 
#拟合模型 get_params([deep]) 
#获取 LinearRegression 构造方法的参数信息
predict(X) #求预测值 
#同 decision_function 
'''
clf=LinearRegression()				#构建相应模型 
clf.fit([[0,0],[1,1],[2,2]],[0,1,2])#模型训练 
pre=clf.predict([[3,3]])			#模型预测 ,得到预测值pre
print(clf.coef_)#系数, y=0.5*x1+0.5*x2 
print(pre)

结果:
在这里插入图片描述
另一个经典案例:

波士顿房价预测:
'''波士顿房价数据集(Boston House Price Dataset)包含对房价的预测,以千美元计,给定的条件是房屋及其相邻房屋的详细信息。
该数据集是一个回归问题。每个类的观察值数量是均等的,共有 506 个观察,13 个输入变量和1个输出变量。
sklearn库的datasets包含该数据集( load_boston)
'''
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt

bosten=load_boston()#实例化
x_train=bosten.data[:,5:6]#选择住宅平均数那一列,猜测房价应该跟房价成正比
clf=LinearRegression()
clf.fit(x_train,bosten.target)#模型训练
print(clf.coef_) #回归系数
y_pre=clf.predict(x_train)#模型输出值
plt.scatter(x_train,bosten.target) #实际值,散点图
plt.plot(x_train,y_pre,color='red')#绘制拟合曲线
plt.show()

运行结果:
在这里插入图片描述


2. 逻辑回归:找到一条直线来分类数据

逻辑回归虽然名字叫回归,却是属于分类算法,是通过Sigmoid函数(或者称为Logistic函数,逻辑名称的由来)将线性函数的结果映射到Sigmoid函数中,预估事件出现的概率并分类。
也就是逻辑回归仅在线性回归分析的基础上套用了一个逻辑函数,用于预测二值型因变量。

Sigmoid是归一化的函数,可以把连续数值转化为0到1的范围,提供了一种将连续型的数据离散化为离散型数据的方法。
我们可以画出sigmoid函数:
在这里插入图片描述
因此,逻辑回归从直观上来说是画出了一条分类线。位于分类线一侧的数据,概率>0.5,属于分类A;位于分类线另一侧的数据,概率<0.5,属于分类B。
例如图中通过计算患肿瘤的概率,将结果分类两类,分别位于逻辑分类线的两侧。
在这里插入图片描述
逻辑回归是计算广告学的核心,逻辑回归可以通过历史数据预测用户未来可能发生的购买行为。

Python实现逻辑回归

初始化变量

class LogisticRegressionSelf:

    def __init__(self):
        """初始化Logistic regression模型"""
        self.coef_ = None #维度
        self.intercept_ = None #截距
        self._theta = None#学习速率

实现sigmoid函数:


    def _sigmoid(x):
        y = 1.0 / (1.0 + np.exp(-x))
        return y

实现损失函数:
关于公式的推导请看吴恩达机器学习教程-简化代价函数语梯度下降
在这里插入图片描述

#计算损失函数
        def J(theta,X_b,y):
            p_predcit = self._sigmoid(X_b.dot(theta))
            try:
                return -np.sum(y*np.log(p_predcit) + (1-y)*np.log(1-p_predcit)) / len(y)
            except:
                return float('inf')

然后还需实现损失函数的导数:
在这里插入图片描述
完整代码:

import numpy as np

class LogisticRegressionSelf:

    def __init__(self):
        """初始化Logistic regression模型"""
        self.coef_ = None #维度
        self.intercept_ = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值