机器学习浅谈
机器学习可以分为以下一个或多个类别:
- 监督式学习
- 非监督式学习
- 强化学习
- 生成式AI
监督式学习
监督式学习模型通过大量数据以及正确答案就能做出预测。两个常见的应用场景是回归和分类。
回归
回归模型可预测数值,比如降雨量预测。
以下是一个简单的回归模型
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(1, 10, 1)
y = 0.9 * t + np.sin(t)
plt.plot(t, y, "o")
# plt.show()
model = np.polyfit(t, y, deg = 2)
# print(model)
t2 = np.arange(-2, 12, 0.5)
y2predict = np.polyval(model, t2)
plt.plot(t, y, "o", t2, y2predict, "x")
plt.show()
但注意并不是 deg 越大越好,deg 越大在给定的数据上拟合程度高,但是在区域外就不行了,这种就是过拟合。
分类
分类模型预测事物应归属哪一类。
这里写的是 k-近邻算法(k-nearest neighbor classification),简单来说就是根据你最近的 k 个邻居的成分来判断你的成分。
import os
import pandas as pd
from sklearn import neighbors
thisFilePath = os.path.abspath('.')
os.chdir(thisFilePath)
os.getcwd()
df = pd.read_csv('DataForClassify.csv')
# print(df.head())
train_x = df.iloc[0:80, 2:4]
# print(train_x.head())
train_y = df.iloc[0:80, 1]
# print(train_y.head())
model = neighbors.KNeighborsClassifier()
model.fit(train_x, train_y)
test_x = df.iloc[80:100, 2:4]
test_y = df.iloc[80:100, 1]
test_p = model.predict(test_x)
print(test_p)
print(test_y.values)
print(model.score(test_x, test_y))
非监督式学习
非监督式学习会根据给定的不含正确答案的数据回答。非监督式学习的目标是数据之间的差异。即模型没有提示,但需要推断出自己的规则对每一项数据进行分类。
常用的非监督式学习采用一种称为聚类的方法。
KMeans 算法
简单来说就是找临近点,然后找重心,然后继续找临近点,最后分为 k 类。
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
thisFilePath = os.path.abspath('.')
os.chdir(thisFilePath)
os.getcwd()
df = pd.read_csv('DataForClassify.csv')
# print(df.head())
train_x = df.iloc[0:80, 2:4]
train_y = df.iloc[0:80, 1]
train_x2 = np.array(train_x[['yuwen', 'shuxue']])
# print(train_x2.shape)
Kmeans_model = KMeans(n_clusters = 3)
# print(Kmeans_model)
Kmeans_model = Kmeans_model.fit(train_x2)
# print(Kmeans_model.labels_)
clusterResult = pd.DataFrame(Kmeans_model.labels_, index = train_x.index, columns = ['clusterResult'])
# print(clusterResult.head())
def showCluster(dataSet, k, centroids, clusterAssment):
numSamples, dim = dataSet.shape
if (dim != 2):
return False
mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
if (k > len(mark)):
return False
for i in range(numSamples):
markIndex = int(clusterAssment[0, i])
plt.plot(dataSet[i, 0], dataSet[i, 1], mark[markIndex])
mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
for i in range(k):
plt.plot(centroids[i, 0], centroids[i, 1], mark[i], markeredgecolor = 'k', markersize = 14)
plt.show()
train_x_array = np.array(train_x[['yuwen', 'shuxue']])
showCluster(train_x_array, 3, Kmeans_model.cluster_centers_, Kmeans_model.labels_.reshape(1, -1))
强化学习
强化学习重点在于获得奖励和规避惩罚,例如 Alphago 。
生成式ai
生成式ai是一类可以根据用户输入返回内容的模型。
标签:机器,df,基础,学习,test,train,print,import,model From: https://www.cnblogs.com/mklzc/p/18431429