从前几天起我就开始了愉快的机器学习,这里记录一下学习笔记,我看的是吴恩达老师的视频,这篇博客将会按吴老师的教学目录来集合各优良文章,以及部分的个人我的总结php
一、 监督学习与无监督学习html
监督:给定一个算法,须要部分数据集有正确的答案python
分类和回归:给定一个样本特征 , 咱们但愿预测其对应的属性值 , 若是 是离散的, 那么这就是一个分类问题,反之,若是 是连续的实数, 这就是一个回归问题。算法
无监督学习:dom
聚类算法:给定一组样本特征 , 咱们没有对应的属性值 , 而是想发掘这组样本在维空间的分布, 好比分析哪些样本靠的更近,哪些样本之间离得很远, 这就是属于聚类问题。机器学习
鸡尾酒聚会算法:https://blog.csdn.net/mrharvey/article/details/18598605函数
二、 代价函数学习
实质为线性函数的拟合度问题测试
参考https://www.cnblogs.com/luozhenj/articles/7639484.htmlspa
相应的代码(python)
https://o-my-chenjian.com/2017/05/26/Cost-Function-Of-ML/
三、梯度降低
这玩意跟dfs同样,拿吴老师的举例,下山,每一步找最陡的下去,最终到最低点
这篇文章写的比较好 https://www.jianshu.com/p/c7e642877b0e
四、多项式回归
概念见这篇文章:https://blog.csdn.net/zoe9698/article/details/82386914
实践见这篇:https://www.cnblogs.com/Belter/p/8530222.html
五、正规方程
公式推导:https://blog.csdn.net/zoe9698/article/details/82419330
python实现:https://www.lmlphp.com/user/3178/article/item/27041/
接下来就是与识别有关的内容,首先是分类问题
六、分类
理论介绍:https://www.cnblogs.com/lsyz/p/8711103.html
而后我找到了skleran这个库,尝试去编写一些代码来进行分析
今天先学会怎么生成数据吧23333
from sklearn import datasets#引入数据集 #构造的各类参数能够根据本身须要调整 X,y=datasets.make_regression(n_samples=200,n_features=2,n_targets=2,noise=1) ###绘制构造的数据### import matplotlib.pyplot as plt plt.figure() plt.scatter(X,y) plt.show()
还有那啥datatest.load_xxxx
今天继续学习这个库
首先是KNN
import numpy as np from sklearn import datasets from sklearn.cross_validation import train_test_split from sklearn.neighbors import KNeighborsClassifier iris = datasets.load_iris() iris_X = iris.data iris_Y = iris.target # print(iris_X[:2,:]) # print(iris_Y) ##将上面的数据集分红测试集和训练集,其中测试集占30% X_train,X_test,Y_train,Y_test = train_test_split(iris_X,iris_Y,test_size=0.3) ##此时数据打乱了 #print(Y_train) knn = KNeighborsClassifier() ##训练 knn.fit(X_train,Y_train) ##预测是哪一种花 print(knn.predict(X_test)) ##打印真实值 print(Y_test)
下面是聚类,2到多维
import numpy as np import matplotlib.pyplot as plt %matplotlib inline from sklearn.datasets.samples_generator import make_blobs # X为样本特征,Y为样本簇类别, 共1000个样本,每一个样本4个特征,共4个簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分别为[0.4, 0.2, 0.2,0.2] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.2, 0.2, 0.2], random_state =9) plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show()
咱们改一下数据来看一下效果
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_blobs # X为样本特征,Y为样本簇类别, 共1000个样本,每一个样本4个特征,共4个簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分别为[0.4, 0.3, 0.2,0.1] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.3, 0.2, 0.1], random_state =9) plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show()
因此差很少应该能理解对应参数的含义了吧,这是二维数据和二维特征
咱们用K-Means聚类方法来作聚类,首先选择k=2
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import make_blobs # X为样本特征,Y为样本簇类别, 共1000个样本,每一个样本4个特征,共4个簇,簇中心在[-1,-1], [0,0],[1,1], [2,2], 簇方差分别为[0.4, 0.2, 0.2] X, y = make_blobs(n_samples=1000, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]], cluster_std=[0.4, 0.3, 0.2, 0.1], random_state =9) plt.scatter(X[:, 0], X[:, 1], marker='o') plt.show() from sklearn.cluster import KMeans y_pred = KMeans(n_clusters=2, random_state=9).fit_predict(X) plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.show()
k=3,4只需改一下clusters
咱们选择一个效果评判函数:
from sklearn import metrics metrics.calinski_harabaz_score(X, y_pred)
下面是相应的kmeans理论:https://www.cnblogs.com/bourneli/p/3645049.html