自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 scikit-learn 中的 PCA

scikit-learn 中的PCAfrom sklearn.decomposition import PCApca = PCA(n_components=1)pca.fit(X)X_reduction = pca.transform(X)X_restore = pca.inverse_transform(X_reduction)plt.scatter(X[:,0],X[:,1],color='b',alpha=0.5)plt.scatter(X_restore[:,0],X_rest

2020-12-22 10:39:29 525

原创 高维数据映射为低维数据

从高维向低维映射,其中 k < n恢复为原来的维度,k < n ,恢复后信息是有丢失的代码实现封装 PCA 类:import numpy as npclass PCA: def __init__(self,n_components): """初始化PCA""" assert n_components >= 1,"n_components must be valid" self.n_components = n_com

2020-12-21 21:13:12 1348

原创 求数据的前 n 个主成分

主成分分析第二主成分就是在新的数据上求第一主成分。代码实现首先,根据上节求出数据的第一主成分下面求第二主成分#%% 第二主成分#X2 = np.empty(X.shape)#for i in range(len(X)):# X2[i] = X[i] - X[i].dot(w) * wX2 = X - X.dot(w).reshape(-1,1) * w #此行可代替上面三行plt.scatter(X2[:,0],X2[:,1])plt.show()图像与第一主成分垂

2020-12-20 23:07:03 501

原创 使用梯度上升法求解 PCA 问题

代码实现:import numpy as np import matplotlib.pyplot as pltX = np.empty((100,2))X[:,0] = np.random.uniform(0.,100.,size=100)X[:,1] = 0.75 * X[:,0] + 3. + np.random.normal(0,10.,size=100)plt.scatter(X[:,0],X[:,1])plt.show()结果:#%% demeandef dem.

2020-12-20 20:55:08 132

原创 什么是PCA?

主成分分析一个非监督的机器学习算法主要用于数据的降维通过降维,可以发现更便于人类理解的特征其他应用:可视化;去噪对于上图,如何找到这个样本间间距最大的轴?如何定义样本间间距?使用方差找到一个轴,使得样本空间的所有点映射到这个轴后,方差最大将样例的均值归为0(demean)【所有样本减去这批样本的均值】此时即此时这就成了一个目标函数的最优化问题,可以使用梯度上升法解决。不要将 PCA 和 线性回归 搞混了...

2020-12-16 19:33:02 718

原创 调试梯度下降法

如图,关于梯度的调试,通过不求导的方式来确定梯度计算的准确性。在某点的两边各取一点,通过式来得到某点的梯度。#%% 如何调试梯度import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666)X = np.random.random(size=(1000,10))true_theta = np.arange(1,12,dtype=float)X_b = np.hstack([np.ones((len(X),

2020-12-16 16:41:36 129

原创 scikit-learn 中的随机梯度下降法

改进封装随机梯度下降法在线性回归中的使用:def fit_sgd(self, X_train, y_train, n_iters=5, t0=5, t1=50): """根据训练数据集X_train, y_train, 使用梯度下降法训练Linear Regression模型""" assert X_train.shape[0] == y_train.shape[0], \ "the size of X_train must be equal to the size of

2020-12-14 21:49:17 243

原创 批量更改 txt 文件中每一行的相同内容

要求:将 txt 文件中每行的部分地址字符串 “/home/weiyiran/partition/code/yancao_detection” 更改为 “/data/liuwei/wangyan”,原 txt 文件如下:代码实现:file = open('E:/pycharm/13_文件/kitti_simple_label.txt') # 默认只读file1 = open('E:/pycharm/13_文件/ki.TXT','w') # 写入文件for i in range(1225):

2020-12-10 18:03:25 1379 1

原创 python 批量重命名文件夹下的图像

要求:将下面的图像名改为 0001.png,0002.png,0003.png……(保持位数一致)代码如下:import osclass ImageRename(): def __init__(self): self.path = 'F:/data/bar 1' # 图片存放地址 def rename(self): filelist = os.listdir(self.path) total_num = len(filelist)

2020-12-10 15:41:59 280 1

原创 随机梯度下降法

批量梯度下降法 Batch Gradient Descent对于上式,任意取 i 的一个值,则有下式:随机梯度下降的方式可用下图来表示可看出,它不能保证每次得到的方向都是梯度减小的方向,更不能保证每次都是减小速度最快的方向。这样,学习率 eta 的取值就变得非常重要。我们模拟退火的思想,取代码实现先使用之前的方法实现import numpy as npimport matplotlib.pyplot as pltm = 100000x = np.random.normal(siz

2020-12-06 19:35:25 407 2

原创 梯度下降的向量化和数据标准化

线性回归中梯度下降法的向量化将梯度式写为此处,X0(i)== 1。若将上式转置,则可分解为或者直接写为下式:由此,可对我们之前的代码进行修改,如下:def dJ(theta,X_b,y): # res = np.empty(len(theta)) # 对每个 theta 求导,所以开辟 len(theta) 个空间 # res[0] = np.sum(X_b.dot(theta) - y) #矩阵第 0 行 # for i in range(1,len(th

2020-12-05 15:49:00 457

原创 代码实现线性回归中的梯度下降法

在线性回归模型中使用梯度下降法定义数据集import numpy as npimport matplotlib.pyplot as pltnp.random.seed(666) # 添加随机种子x = 2 * np.random.random(size=100) # 自己定义数据集y = x * 3. + 4. + np.random.normal(size=100)X = x.reshape(-1,1) # 将 x 转换为 100 行 1 列的形式plt.scatter(

2020-12-03 19:27:18 423

原创 多元线性回归中的梯度下降法

线性回归中,目标是使:尽可能小。其中则,目标就转化为,使尽可能小。对 J(上式)在每一点 theta 求导其中由上面的求导式(即梯度)可看出,每一行都是 m 项求和得来的,即梯度与样本数量有关,这显然是不合理的。而我们希望我们求出的梯度是和 m 无关的,所以为每一项除以 m此时,目标又变为,使尽可能小。此处,也就是有时,我们取1/2 与 求导所得的 2 可以约掉,这个系数影响不大。...

2020-12-03 10:18:32 770

原创 梯度下降法模拟(二)

代码模拟首先绘制曲线plot_x = np.linspace(-1,6,141) # 将 -1 至 6 均分为 141 个点plot_y = (plot_x - 2.5) ** 2 - 1plt.plot(plot_x,plot_y) # 绘制曲线plt.show()接下来,首先定义函数 DJ 和 J:def dJ(theta): return 2 * (theta - 2.5) #对 plot_y 求导def J(theta): return (theta -

2020-12-02 19:54:53 180

原创 梯度下降法(一)

梯度下降法(Gradient Descent)不是一个机器学习算法(不能用于解决回归或分类问题)是一种基于搜索的最优化方法作用:最小化一个损失函数梯度上升法:最大化一个效用函数在机器学习领域,熟练掌握梯度法来求一个目标函数的最优值是非常重要的。如图,寻找一个theta 使得 损失函数J 最小 。每取一个 theta 值都对应一个 J。对于导数 dJ / d theta,在直线方程中,导数代表斜率;曲线方程中,导数代表切线斜率;在此图中,导数代表 theta 单位变化时,J相应的变化。由

2020-12-01 21:11:10 207

原创 使用scikit-learn解决回归问题

scikit-learn中的回归问题加载和上节同样的数据,通过代码from sklearn.model_selection import train_test_splitX_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666) #将数据集分为训练集和测试集from sklearn.linear_model import LinearRegression #调用sklearn中的LinearRegressio

2020-12-01 19:23:16 470

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除