集成学习(上)机器学习基础

集成学习(上)机器学习基础

1.机器学习概念

1.1 机器学习的重要的目标

利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。

1.2 机器学习分类

1.机器学习的任务可分为:有监督学习和无监督学习
在这里插入图片描述
有监督学习:给定某些特征去估计因变量,即因变量存在的时候,我们称这个机器学习任务为有监督学习。如:我们使用房间面积,房屋所在地区,环境等级等因素去预测某个地区的房价。
无监督学习:给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。如:我们给定某电商用户的基本信息和消费记录,通过观察数据中的哪些类型的用户彼此间的行为和属性类似,形成一个客群。注意,我们本身并不知道哪个用户属于哪个客群,即没有给定因变量。

2.根据因变量的是否连续,有监督学习又分为回归和分类:
回归:因变量是连续型变量,如:房价,体重等。
分类:因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。

2.练习实例

2.1 回归

机器学习中,我们经常使用scikit-learn简称sklearn工具库来探索机器学习项目。
scikit-learn 内置有一些小型标准数据集,不需要从某个外部网站下载任何文件,用datasets.load_xx()加载,可以用来学习算法模型,例如: boston 房价, 糖尿病, 数字, Iris 花。

有监督学习中回归的例子,我们使用sklearn内置数据集Boston房价数据集。
sklearn中所有内置数据集都封装在datasets对象内: 返回的对象有:

  • data:特征X的矩阵(ndarray)
  • target:因变量的向量(ndarray)
  • feature_names:特征名称(ndarray)
# 引入相关科学计算包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot") # ggplot2是R语言最流行的第三方扩展包,它实现了“图形的语法”
import seaborn as sns
import warnings
warnings.filterwarnings('ignore') 
from sklearn import datasets
boston = datasets.load_boston() # 返回一个类似于字典的类
X = boston.data    #sklearn很规则的吧数据分为了data(输入)与target(输出)两部分
y = boston.target
features = boston.feature_names
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()

在这里插入图片描述

sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)  #seaborn绘制散点图,命令是scatterplot(),alpha为不透明度
plt.title("Price~NOX")
plt.show()

在这里插入图片描述
各个特征的相关解释:
CRIM:各城镇的人均犯罪率
ZN:规划地段超过25,000平方英尺的住宅用地比例
INDUS:城镇非零售商业用地比例
CHAS:是否在查尔斯河边(=1是)
NOX:一氧化氮浓度(/千万分之一)
RM:每个住宅的平均房间数
AGE:1940年以前建造的自住房屋的比例
DIS:到波士顿五个就业中心的加权距离
RAD:放射状公路的可达性指数
TAX:全部价值的房产税率(每1万美元)
PTRATIO:按城镇分配的学生与教师比例
sns.scatterplot(boston_data[‘NOX’],boston_data[‘Price’],color=“r”,alpha=0.6)
plt.title(“Price~NOX”)
plt.show()
B:1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例
LSTAT:较低地位人口
Price:房价

2.2 分类

Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
iris_data.head()

在这里插入图片描述

# 可视化特征
marker = ['s','x','o']
for index,c in enumerate(np.unique(y)):
 plt.scatter(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()
           

在这里插入图片描述
我们可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。
因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。
各个特征的相关解释:
sepal length (cm):花萼长度(厘米)
sepal width (cm):花萼宽度(厘米)
petal length (cm):花瓣长度(厘米)
petal width (cm):花瓣宽度(厘米)

2.3 无监督学习

无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。
它主要具备3个特点:

  • 无监督学习没有明确的目的
  • 无监督学习不需要给数据打标签
  • 无监督学习无法量化效果
# 生成月牙型非凸集
from sklearn import datasets
x, y = datasets.make_moons(n_samples=2000, shuffle=True,
 noise=0.05, random_state=None)
for index,c in enumerate(np.unique(y)):
 plt.scatter(x[y==c,0],x[y==c,1],s=7)
plt.show()

在这里插入图片描述

# 生成圆圈

from sklearn import datasets 
x,y=datasets.make_circles(n_samples=100, shuffle=True, noise=None, random_state=None, factor=0.8)
for index,c in enumerate(np.unique(y)): 
    plt.scatter(x[y==c, 0], x[y==c, 1],s=7) 
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值