python range()原理

'''
定义MyRange类,实现下列功能
for item in MyRange(999999999999999999):
	print(item)	#0 1 2 3 4 .......999999999999999999
'''
class MyRangeIterator:
	def __init__(self,stop):
		self.__start = -1
		self.__stop = stop

	def __next__(self):
		if self.__start >= self.__stop -1:
			raise StopIteration
		self.__start += 1
		return self.__start
	
class MyRange:
	def __init__(self,stop_value):
		self.__stop_value = stop_value

	def __iter(self):
		return MyRangeIterator(self.__stop_value)

for item in MyRange(999999999999999999):
	print(item)	
	#这么大的数,不会撑爆内存,因为每次__next__()返回一个数给变量item,之前的数就销毁了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K-Means 聚类算法是一种无监督学习算法,用于将数据集分成 K 个不同的类别,每个数据点被分配到最近的类别中心。以下是 K-Means 聚类算法的步骤: 1. 从数据集中选择 K 个随机数据点作为初始聚类中心。 2. 对于每个数据点,计算其到每个聚类中心的距离,并将其分配到距离最近的聚类中心。 3. 对于每个聚类,计算其所有数据点的平均值,并将其作为新的聚类中心。 4. 重复步骤2和3,直到聚类中心不再改变或者达到指定的迭代次数。 下面是 K-Means 聚类算法的 Python 实现: ```python import numpy as np class KMeans: def __init__(self, n_clusters=8, max_iter=300, tol=1e-4): self.n_clusters = n_clusters self.max_iter = max_iter self.tol = tol def fit(self, X): self.centroids = X[np.random.choice(X.shape[0], self.n_clusters, replace=False)] for _ in range(self.max_iter): clusters = [[] for _ in range(self.n_clusters)] for x in X: distances = np.linalg.norm(self.centroids - x, axis=1) cluster = np.argmin(distances) clusters[cluster].append(x) new_centroids = np.array([np.mean(cluster, axis=0) for cluster in clusters]) if np.linalg.norm(new_centroids - self.centroids) < self.tol: break self.centroids = new_centroids def predict(self, X): distances = np.linalg.norm(self.centroids - X[:, np.newaxis], axis=2) return np.argmin(distances, axis=1) ``` 这个实现中,fit() 方法用于训练模型,predict() 方法用于预测数据点所属的类别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值