日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

[云炬python3玩转机器学习]5-4向量化高效运算

發布時間:2025/3/15 python 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [云炬python3玩转机器学习]5-4向量化高效运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

向量化實現SimpleLinearRegression

In?[23]:

import datetime print("Run by CYJ,",datetime.datetime.now())from playML.SimpleLinearRegression import SimpleLinearRegression2 reg2 = SimpleLinearRegression2() reg2.fit(x, y) Run by CYJ, 2022-01-17 21:09:49.796743

Out[23]:

SimpleLinearRegression2()

In?[21]:

reg2.a_,reg2.b_

Out[21]:

(0.8, 0.39999999999999947)

In?[20]:

y_hat2 = reg2.predict(x) plt.scatter(x, y) plt.plot(x, y_hat2, color='r') plt.axis([0, 6, 0, 6]) plt.show()

向量化實現的性能測試(向量運算效率/for循環代數運算效率=76倍)

In?[24]:

import datetime print("Run by CYJ,",datetime.datetime.now())m = 1000000 big_x = np.random.random(size=m) big_y = big_x * 2 + 3 + np.random.normal(size=m)%timeit reg1.fit(big_x, big_y) %timeit reg2.fit(big_x, big_y) Run by CYJ, 2022-01-17 21:11:39.840437 1.33 s ± 11.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) 17.3 ms ± 358 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In?[25]:

reg1.a_

Out[25]:

2.002845878151015

In?[26]:

reg1.b_

Out[26]:

2.9993915955553723

In?[27]:

reg2.a_

Out[27]:

2.0028458781509695

In?[28]:

reg2.b_

Out[28]:

2.9993915955553945

封裝的SimpleLinearRegression1和2類

import numpy as npclass SimpleLinearRegression1:def __init__(self):"""初始化Simple Linear Regression 模型"""self.a_ = Noneself.b_ = Nonedef fit(self, x_train, y_train):"""根據訓練數據集x_train,y_train訓練Simple Linear Regression模型"""assert x_train.ndim == 1, \"Simple Linear Regressor can only solve single feature training data."assert len(x_train) == len(y_train), \"the size of x_train must be equal to the size of y_train"x_mean = np.mean(x_train)y_mean = np.mean(y_train)num = 0.0d = 0.0for x, y in zip(x_train, y_train):num += (x - x_mean) * (y - y_mean)d += (x - x_mean) ** 2self.a_ = num / dself.b_ = y_mean - self.a_ * x_meanreturn selfdef predict(self, x_predict):"""給定待預測數據集x_predict,返回表示x_predict的結果向量"""assert x_predict.ndim == 1, \"Simple Linear Regressor can only solve single feature training data."assert self.a_ is not None and self.b_ is not None, \"must fit before predict!"return np.array([self._predict(x) for x in x_predict])def _predict(self, x_single):"""給定單個待預測數據x,返回x的預測結果值"""return self.a_ * x_single + self.b_def __repr__(self):return "SimpleLinearRegression1()"class SimpleLinearRegression2:def __init__(self):"""初始化Simple Linear Regression模型"""self.a_ = Noneself.b_ = Nonedef fit(self, x_train, y_train):"""根據訓練數據集x_train,y_train訓練Simple Linear Regression模型"""assert x_train.ndim == 1, \"Simple Linear Regressor can only solve single feature training data."assert len(x_train) == len(y_train), \"the size of x_train must be equal to the size of y_train"x_mean = np.mean(x_train)y_mean = np.mean(y_train)self.a_ = (x_train - x_mean).dot(y_train - y_mean) / (x_train - x_mean).dot(x_train - x_mean)self.b_ = y_mean - self.a_ * x_meanreturn selfdef predict(self, x_predict):"""給定待預測數據集x_predict,返回表示x_predict的結果向量"""assert x_predict.ndim == 1, \"Simple Linear Regressor can only solve single feature training data."assert self.a_ is not None and self.b_ is not None, \"must fit before predict!"return np.array([self._predict(x) for x in x_predict])def _predict(self, x_single):"""給定單個待預測數據x_single,返回x_single的預測結果值"""return self.a_ * x_single + self.b_def __repr__(self):return "SimpleLinearRegression2()"

總結

以上是生活随笔為你收集整理的[云炬python3玩转机器学习]5-4向量化高效运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。