训练逻辑回归

简介: 【7月更文挑战第22天】训练逻辑回归。

训练逻辑回归

创造数据

raw_data_X = [[1.85, 1.05],
[1.57, 2.63],
[2.28, 1.42],
[2.28, 3.64],
[1.94, 3.68],
[2.09, 2.66],
[1.49, 3.66],

               [0.12, 1.12],
               [0.25, 1.04],
               [0.23, 0.54],
               [0.83, 1.49],
               [0.95, 0.09],
               [0.46, 1.63],
               [0.26, 1.03],
               ]

raw_data_Y = [0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1];
data = np.array(raw_data_X)
label = np.array(raw_data_Y)

data = np.hstack(data).reshape(-1,2)
label = np.hstack(label).reshape(-1,1)
label1 = label.reshape(1,-1)[0]

plt.scatter(data[label1 == 0, 0], data[label1 == 0, 1], marker="*")
plt.scatter(data[label1 == 1, 0], data[label1 == 1, 1], marker="^")
plt.show()

x = tf.placeholder(tf.float32,shape=(None,2))
y_ = tf.placeholder(tf.float32,shape=(None,1))

tf.random_normal()函数用于从服从指定正态分布的数值中取出指定个数的值

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None,

name=None)
weight = tf.Variable(tf.random_normal([2,1]), dtype=tf.float32)
bias = tf.Variable(tf.constant(0.1, shape=[1]))

tf.nn.sigmoid()是激活函数

y_hat = tf.nn.sigmoid(tf.matmul(x, weight) + bias)

不适用该损失函数

cost = tf.reducesum(tf.square(y - y_hat))

损失函数

cost = - tf.reducemean(y tf.log(tf.clip_by_value(yhat, 1e-10, 1.0)) + \
(1 - y
)
tf.log(tf.clip_by_value((1 - y_hat), 1e-10, 1.0)))

梯度下降

optimizer = tf.train.AdamOptimizer(0.001)
train = optimizer.minimize(cost)

开始训练

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
plt.ion()
for i in range(8000):
sess.run(train,feeddict={x:data,y:label})

         #画出训练后的分割函数
         #mgrid()函数产生两个300×400的数组:0~3每隔0.1取一个数,共300×400个
         xx, yy = np.mgrid[0:3:.1,0:4:.1]
         if (i % 20) == 0:
                # np.c_用于合并两个数组
                # ravel()函数将多维数组降为一维,仍返回array数组,元素以列排列
                grid = np.c_[xx.ravel(), yy.ravel()]
                probs = sess.run(y_hat, feed_dict={x:grid})
                # print(probs)
                probs = probs.reshape(xx.shape)
                plt.cla() # 清除原有图像
                plt.scatter(data[label1 == 0, 0], data[label1 == 0, 1], marker="*")
                plt.scatter(data[label1 == 1, 0], data[label1 == 1, 1], marker="^")
                plt.contour(xx, yy, probs, levels=[.5])
                plt.pause(0.00001)
                print("After %d steps, cost:%f" % (i, sess.run(cost, feed_dict=

{x:data,y_:label})))
plt.close()

相关文章
|
20天前
|
机器学习/深度学习 数据采集 监控
深度学习中模型训练的过拟合与欠拟合问题
在机器学习和深度学习中,过拟合和欠拟合是影响模型泛化能力的两大常见问题。过拟合指模型在训练数据上表现优异但在新数据上表现差,通常由模型复杂度过高、数据不足或质量差引起;欠拟合则指模型未能充分学习数据中的模式,导致训练和测试数据上的表现都不佳。解决这些问题需要通过调整模型结构、优化算法及数据处理方法来找到平衡点,如使用正则化、Dropout、早停法、数据增强等技术防止过拟合,增加模型复杂度和特征选择以避免欠拟合,从而提升模型的泛化性能。
WK
|
5月前
|
机器学习/深度学习 算法 数据挖掘
什么是逻辑回归分类器
逻辑回归分类器是一种广泛应用于二分类问题的统计方法,它基于线性组合并通过Sigmoid函数将输出映射为概率值进行分类。核心原理包括:线性组合假设函数、Sigmoid函数转换及基于概率阈值的预测。该模型计算高效、解释性强且鲁棒性好,适用于信用评估、医疗诊断、舆情分析和电商推荐等多种场景。利用现有机器学习库如scikit-learn可简化其实现过程。
WK
77 1
|
5月前
|
机器学习/深度学习 算法 Python
线性回归模型学习
【9月更文挑战第3天】
50 5
|
8月前
|
机器学习/深度学习 算法 Python
线性回归训练和预测代码详解
线性回归作为一种基础的回归分析方法,其核心思想和实现相对简单。本文通过详细的代码示例,介绍了线性回归模型的训练过程和预测函数的实现。希望能够帮助读者更好地理解和掌握这一基础算法。在实际应用中,线性回归可以作为一种初步的分析工具,为更复杂的模型提供参考和基础。
116 2
|
7月前
|
机器学习/深度学习 数据采集 算法
|
9月前
|
机器学习/深度学习 定位技术 数据处理
认识线性回归模型
线性回归是一种广泛应用于统计学和机器学习的技术,用于研究两个或多个变量之间的线性关系。
79 1
|
9月前
|
机器学习/深度学习 分布式计算 前端开发
线性回归模型使用技巧
【5月更文挑战第14天】线性回归基础及进阶应用概述:探讨模型假设、最小二乘法和系数估计;通过多项式特征处理非线性关系;应用正则化(Lasso、Ridge)减少过拟合;特征选择优化模型复杂度;使用GridSearchCV进行超参数调优;处理分组数据、缺失值;集成方法(Bagging)提升性能;尝试岭回归、弹性网络、高斯过程回归和鲁棒回归;利用模型融合增强预测力;应对大规模数据挑战;分析特征重要性;自动特征工程;增强模型解释性;集成模型多样性及权重调整;应用序列最小优化(SMO)、预测区间估计;动态特征选择;模型校验与调优;稳定性分析;迁移学习。
130 3
|
9月前
|
机器学习/深度学习
【机器学习】如何根据训练集大小选择分类器?
【5月更文挑战第10天】【机器学习】如何根据训练集大小选择分类器?
|
9月前
|
机器学习/深度学习 算法 小程序
垃圾分类算法训练及部署
垃圾分类算法训练及部署
72 1
|
机器学习/深度学习 存储 算法
逻辑回归模型
逻辑回归模型
166 0

相关实验场景

更多