AI5. 使用梯度下降对逻辑回归进行训练
描述
,请根据上述给定的信息完成接下来的代码补全。
Python 3 解法, 执行用时: 807ms, 内存消耗: 524288KB, 提交时间: 2022-07-04
import numpy as np import pandas as pd def generate_data(): datasets = pd.read_csv('dataSet.csv', header=None).values.tolist() labels = pd.read_csv('labels.csv', header=None).values.tolist() return datasets, labels def sigmoid(X): ava = 1/(1+np.exp(-X)) #补全 sigmoid 函数功能 #code start here return ava #code end here def gradientDescent(dataMatIn, classLabels): alpha = 0.001 # 学习率,也就是题目描述中的 α iteration_nums = 100 # 迭代次数,也就是for循环的次数 dataMatrix = np.mat(dataMatIn) labelMat = np.mat(classLabels).transpose() m, n = np.shape(dataMatrix) # 返回dataMatrix的大小。m为行数,n为列数。 weight_mat = np.ones((n, 1)) #初始化权重矩阵 #iteration_nums 即为循环的迭代次数 #请在代码完善部分注意矩阵乘法的维度,使用梯度下降矢量化公式 #code start here for i in range(iteration_nums): hx=sigmoid(dataMatrix*weight_mat) weight_mat=weight_mat-alpha*dataMatrix.transpose()*(hx-labelMat) return weight_mat #code end here if __name__ == '__main__': dataMat, labelMat = generate_data() print(gradientDescent(dataMat, labelMat))
Python 3 解法, 执行用时: 811ms, 内存消耗: 524288KB, 提交时间: 2022-06-29
import numpy as np import pandas as pd def generate_data(): datasets = pd.read_csv('dataSet.csv', header=None).values.tolist() labels = pd.read_csv('labels.csv', header=None).values.tolist() return datasets, labels def sigmoid(X): return 1/(1+np.exp(-X)) #补全 sigmoid 函数功能 #code start here #code end here def gradientDescent(dataMatIn, classLabels): alpha = 0.001 # 学习率,也就是题目描述中的 α iteration_nums = 100 # 迭代次数,也就是for循环的次数 dataMatrix = np.mat(dataMatIn) labelMat = np.mat(classLabels).transpose() m, n = np.shape(dataMatrix) # 返回dataMatrix的大小。m为行数,n为列数。 weight_mat = np.ones((n, 1)) #初始化权重矩阵 #iteration_nums 即为循环的迭代次数 #请在代码完善部分注意矩阵乘法的维度,使用梯度下降矢量化公式 #code start here for i in range(iteration_nums): hx=sigmoid(dataMatrix*weight_mat) weight_mat=weight_mat-alpha*dataMatrix.transpose()*(hx-labelMat) return weight_mat #code end here if __name__ == '__main__': dataMat, labelMat = generate_data() print(gradientDescent(dataMat, labelMat))
Python 3 解法, 执行用时: 823ms, 内存消耗: 524288KB, 提交时间: 2022-06-23
import numpy as np import pandas as pd def generate_data(): datasets = pd.read_csv('dataSet.csv', header=None).values.tolist() labels = pd.read_csv('labels.csv', header=None).values.tolist() return datasets, labels def sigmoid(X): #补全 sigmoid 函数功能 #code start here return 1.0 / (1 + np.exp(-X)) #code end here def gradientDescent(dataMatIn, classLabels): alpha = 0.001 # 学习率,也就是题目描述中的 α iteration_nums = 100 # 迭代次数,也就是for循环的次数 dataMatrix = np.mat(dataMatIn) labelMat = np.mat(classLabels).transpose() m, n = np.shape(dataMatrix) # 返回dataMatrix的大小。m为行数,n为列数。 weight_mat = np.ones((n, 1)) #初始化权重矩阵 #iteration_nums 即为循环的迭代次数 #请在代码完善部分注意矩阵乘法的维度,使用梯度下降矢量化公式 #code start here for i in range(iteration_nums): hx = sigmoid(dataMatrix * weight_mat) weight_mat = weight_mat - alpha * dataMatrix.transpose() * (hx - labelMat) return weight_mat #code end here if __name__ == '__main__': dataMat, labelMat = generate_data() print(gradientDescent(dataMat, labelMat))
Python 3 解法, 执行用时: 829ms, 内存消耗: 524288KB, 提交时间: 2022-07-09
import numpy as np import pandas as pd def generate_data(): datasets = pd.read_csv('dataSet.csv', header=None).values.tolist() labels = pd.read_csv('labels.csv', header=None).values.tolist() return datasets, labels def sigmoid(X): #补全 sigmoid 函数功能 #code start here sig=1/(1+np.exp(-X)) return sig #code end here def gradientDescent(dataMatIn, classLabels): alpha = 0.001 # 学习率,也就是题目描述中的 α iteration_nums = 100 # 迭代次数,也就是for循环的次数 dataMatrix = np.mat(dataMatIn) labelMat = np.mat(classLabels).transpose() m, n = np.shape(dataMatrix) # 返回dataMatrix的大小。m为行数,n为列数。 weight_mat = np.ones((n, 1)) #初始化权重矩阵 #iteration_nums 即为循环的迭代次数 #请在代码完善部分注意矩阵乘法的维度,使用梯度下降矢量化公式 #code start here for i in range(iteration_nums): hx=sigmoid(dataMatrix*weight_mat) weight_mat=weight_mat-alpha*dataMatrix.transpose()*(hx-labelMat) return weight_mat #code end here if __name__ == '__main__': dataMat, labelMat = generate_data() print(gradientDescent(dataMat, labelMat))
Python 3 解法, 执行用时: 838ms, 内存消耗: 524288KB, 提交时间: 2022-07-04
import numpy as np 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import numpy as np import pandas as pd def generate_data(): datasets = pd.read_csv('dataSet.csv', header=None).values.tolist() labels = pd.read_csv('labels.csv', header=None).values.tolist() return datasets, labels def sigmoid(X): #补全 sigmoid 函数功能 #code start here return 1/(1+np.exp(-X)) #code end here def gradientDescent(dataMatIn, classLabels): alpha = 0.001 # 学习率,也就是题目描述中的 α iteration_nums = 100 # 迭代次数,也就是for循环的次数 dataMatrix = np.mat(dataMatIn) labelMat = np.mat(classLabels).transpose() m, n = np.shape(dataMatrix) # 返回dataMatrix的大小。m为行数,n为列数。 weight_mat = np.ones((n, 1)) #初始化权重矩阵 #iteration_nums 即为循环的迭代次数 #请在代码完善部分注意矩阵乘法的维度,使用梯度下降矢量化公式 #code start here theta = weight_mat.T for i in range(iteration_nums): gradient_func = (sigmoid(theta * dataMatrix.T)-labelMat.T) * dataMatrix theta = theta - alpha * gradient_func return theta.T #code end here if __name__ == '__main__': dataMat, labelMat = generate_data() print(gradientDescent(dataMat, labelMat))
上一题