1 Star 0 Fork 0

tigerxjlin/ml_and_dl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
knn.py 2.16 KB
一键复制 编辑 原始数据 按行查看 历史
tigerxjlin 提交于 2024-08-14 03:14 . knn算法及线性回归算法
import numpy as np
import operator
def createDataSet():
group = np.array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
labels = ['A', 'A', 'B', 'B']
return group, labels
group, labels = createDataSet()
print(group)
print(labels)
import matplotlib.pyplot as plt
def createDataSet():
group = np.array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
labels = ['A', 'A', 'B', 'B']
return group, labels
def plotDataSet(group, labels):
label_dict = {'A': 'red', 'B': 'blue'}
colors = [label_dict[label] for label in labels]
fig, ax = plt.subplots()
ax.scatter(group[:, 0], group[:, 1], c=colors)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('Data Set')
plt.show()
group, labels = createDataSet()
plotDataSet(group, labels)
def classify0(inX, dataSet, labels, k):
#numpy函数shape[0]返回dataSet的行数
dataSetSize = dataSet.shape[0]
#在列向量方向上重复inX共1次(横向),行向量方向上重复inX共dataSetSize次(纵向)
diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet
#二维特征相减后平方
sqDiffMat = diffMat**2
#sum()所有元素相加,sum(0)列相加,sum(1)行相加
sqDistances = sqDiffMat.sum(axis=1)
#开方,计算出距离
distances = sqDistances**0.5
#返回distances中元素从小到大排序后的索引值
sortedDistIndices = distances.argsort()
#定一个记录类别次数的字典
classCount = {}
for i in range(k):
#取出前k个元素的类别
voteIlabel = labels[sortedDistIndices[i]]
#dict.get(key,default=None),字典的get()方法,返回指定键的值,如果值不在字典中返回默认值。
#计算类别次数
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
#python3中用items()替换python2中的iteritems()
#key=operator.itemgetter(1)根据字典的值进行排序
#key=operator.itemgetter(0)根据字典的键进行排序
#reverse降序排序字典
sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
# import pdb
# pdb.set_trace()
#返回次数最多的类别,即所要分类的类别
return sortedClassCount[0][0]
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/tigerxjlin/ml_and_dl.git
git@gitee.com:tigerxjlin/ml_and_dl.git
tigerxjlin
ml_and_dl
ml_and_dl
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385