一、机器学习
—https://realpython.com/
来源
Datewhle23期__集成学习(上) :
https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning
作者:李祖贤、薛传雨、赵可、杨毅远、陈琰钰
论坛地址:http://datawhale.club/t/topic/1574
机器学习–数据分析技术–利用模型发现规律—预测/推断/分类—有监督/无监督等等
#先导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
1.1 回归
先利用波士顿房价里的因变量和特征作监督学习里的回归
from sklearn import datasets
boston = datasets.load_boston()
print(type(boston)) # 返回一个类似于字典的类
<class 'sklearn.utils.Bunch'>
X = boston.data
y = boston.target
features = boston.feature_names
print(features)
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'
'B' 'LSTAT']
- CRIM:各城镇的人均犯罪率
- ZN:规划地段超过25,000平方英尺的住宅用地比例
- INDUS:城镇非零售商业用地比例
- CHAS:是否在查尔斯河边(=1是)
- NOX:一氧化氮浓度(/千万分之一)
- RM:每个住宅的平均房间数
- AGE:1940年以前建造的自住房屋的比例
- DIS:到波士顿五个就业中心的加权距离
- RAD:放射状公路的可达性指数
- TAX:全部价值的房产税率(每1万美元)
- PTRATIO:按城镇分配的学生与教师比例
- B:1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例
- LSTAT:较低地位人口
- Price:房价
boston_data = pd.DataFrame(X,columns=features) #特征
boston_data["Price"] = y #房价为因变量
print(boston_data.head())
CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX PTRATIO B LSTAT Price
0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 15.3 396.90 4.98 24.0
1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 17.8 396.90 9.14 21.6
2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 17.8 392.83 4.03 34.7
3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 18.7 394.63 2.94 33.4
4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 18.7 396.90 5.33 36.2
作出房价和NOX的散点图
sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="b")
plt.title("Price~NOX")
plt.show()
1.2 分类
鸢尾花(iris)数据中类别 与 花萼花瓣特征 对应关系
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
print(features)
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
print(iris_data.head())
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) target
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
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 widt
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()
不同样式点代表不同类别花
1.3 无监督学习
无监督学习的目标
-
利用无标签的数据学习数据的分布或数据与数据之间的关系被称作无监督学习
-
有监督学习和无监督学习的最大区别在于数据是否有标签
-
无监督学习最常应用的场景是聚类(clustering)和降维(DimensionReduction)
聚类
-
聚类(clustering),就是根据数据的“相似性”将数据分为多类的过程
-
评估两个不同样本之间的“相似性” ,通常使用的方法就是计算两个样本之间的“距离”。使用不同的方法计算样本间的距离会关系到聚类结果的好坏
降维
- 降维就是在保证数据所具有的代表性特征或分布的情况下, 将高维数据转化为低维数据的过程
作用:
-
数据可视化
-
作为中间过程, 起到精简数据, 提高其他机器学习算法效率的作用
降维过程也可以被理解为对数据集的组成成份进行分解(decomposition)的过程
例子1 ** 生成月牙型非凸集
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()
例子2 ** 生成符合正态分布的聚类数据
from sklearn import datasets
x, y = datasets.make_blobs(n_samples=5000, n_features=2, centers=3)
for index,c in enumerate(np.unique(y)):
plt.scatter(x[y==c, 0], x[y==c, 1],s=7)
plt.show()
参考资料
https://www.jianshu.com/p/a65e7928e79f 机器学习分类
https://www.cnblogs.com/weihuchao/p/6874683.html 无监督学习