01机器学习的主要几种方式
1.监督学习 -->就是像学生一样,有平时的训练,也有考试.来训练出的学生就是监督学习的结果
2.非监督学习 -->就像考研一样,没有人会检测你,全靠自己学
3.强化学习 -->一个人打篮球,每投一次球就知道结果,然后靠自己的经验的学习,叫做强化学习
4.遗传算法 --> 就像打拳皇比赛一样,胜者生产,输者淘汰
02机器学习所要做的两种基本事情
1.预测
2.分类
03一个通用的学习模式,KNN分类
import numpy as np from sklearn import datasets # 引入sklearn的例题(练习资料) from sklearn.model_selection import train_test_split # 将数据分成训练和考试用的 from sklearn.neighbors import KNeighborsClassifier # KNN算法 iris = datasets.load_iris() iris_X = iris.data # 获得资料 iris_y = iris.target # 获得目标 print(iris_X[:2,:]) # 打印一下资料 print(iris_y) X_train,X_test,y_train,y_test = train_test_split( iris_X,iris_y,test_size=0.3 # 三七分 注意是0.3不是三 ) knn = KNeighborsClassifier() #这应该是创建了一个对象 knn.fit(X_train,y_train) print(knn.predict(X_test)) print(y_test) # 预测自己编的数据 print(knn.predict([[7,7,7,7]]))
04 学会使用sklearn的数据,来练习
一个简单的线性回归来预测东西
from sklearn import datasets from sklearn.linear_model import LinearRegression #用来线性回归的 import matplotlib.pyplot as plt # 加载数据 loaded_data = datasets.load_boston() data_X = loaded_data.data data_y = loaded_data.target # 应该是有多个未知量 对应一个y # print(data_X[4:8,:]) # print(data_y[4:8]) # 使用线性回归 model = LinearRegression() model.fit(data_X,data_y) # 查看预测数据和真实数据 print(model.predict(data_X[:4,:])) print(data_y[:4]) # 算法的属性 y = 0.1x + 0.3 print(model.coef_) #就相当与0.1 print(model.intercept_) #就相当与0.3 print(model.get_params()) #拿出创建对象时的传入的参数 print(model.score(data_X,data_y)) #通过数据,看看机器学习的打分 # 做法R^2来判断 # 自己手动制作一些数据 # 样本个数 (自变量-x1,x2) 目标-y 噪点 X,y = datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=10) plt.scatter(X,y) plt.show()
05标准化数据
思想就是等比例缩小到一定的范围
from sklearn import preprocessing #用来标准化数据的库 import numpy as np from sklearn.model_selection import train_test_split # 分类数据集 from sklearn.datasets.samples_generator import make_classification #个人生成数据 from sklearn.svm import SVC # 支持向量机 import matplotlib.pyplot as plt # 用来画图的 a = np.array([[10,2.7,3.6], [-100,5,-2], [120,20,40]],dtype=np.float64) print(a) # 标准化后的矩阵 print(preprocessing.scale(a)) X,y = make_classification(n_samples=300,n_features=2,n_redundant=0, n_informative=2,random_state=22,n_clusters_per_class=1, scale=100) # random_state=22 就是种子让每次随机出来的结果是一样的 # plt.scatter(X[:,0],X[:,1],c=y) # plt.show() # -----------> 下一句就是关键点 X = preprocessing.scale(X) # 标准化数据 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=.3) clf = SVC() # 创建支持向量机的对象 clf.fit(X_train,y_train) # 用支持向量机来打分 print(clf.score(X_test,y_test)) # 看看打分的情况