逻辑回归问题

预备知识

  1. pandas中的iloc方法
    在对csv文件进行读取的时候,使用iloc方法比较方便,如:对这么一个数据进行读取:
0,30.83,0,0,0,9,0,1.25,0,0,1,1,0,202,0,-1
1,58.67,4.46,0,0,8,1,3.04,0,0,6,1,0,43,560,-1
1,24.5,0.5,0,0,8,1,1.5,0,1,0,1,0,280,824,-1
0,27.83,1.54,0,0,9,0,3.75,0,0,5,0,0,100,3,-1
0,20.17,5.625,0,0,9,0,1.71,0,1,0,1,2,120,0,-1
...

只需要,这样:

import pandas as pd
datas = pd.read_csv("credit-a.csv", header=None) # 注意到没有表头

在这里插入图片描述
此时,可以结合iloc来进行对类别的统计,即最后一列:

datas.iloc[:, -1].value_counts()

在这里插入图片描述
这里简单说下iloc的用法,iloc[[行], [列]]
其中的行的列表表示所要取的行的范围,列的列表同理。

逻辑回归

import tensorflow as tf
import pandas as pd
import matplotlib.pyplot as plt

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(4, input_shape=(15,), activation="relu"))
model.add(tf.keras.layers.Dense(1, input_shape=(4,), activation="sigmoid"))
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=['accuracy'])
datas = pd.read_csv("credit-a.csv", header=None)
x = datas.iloc[:, 0:-1]
y = datas.iloc[:, -1].replace(-1, 0)
his = model.fit(x, y, epochs=500)
x_test = datas.iloc[:9, 0:-1]
y_test = datas.iloc[:9, -1]
y_predict = model.predict(x_test)

注意到使用的是binary_crossentropy作为损失函数,最后的输出层的激活函数使用的是sigmoid激活函数。
可以绘制下loss的变化过程:

plt.plot(his.epoch, his.history['loss'])

在这里插入图片描述
绘制下accuracy在训练过程中的变化:

plt.plot(his.epoch, his.history['accuracy'])

在这里插入图片描述
最后,可以来进行预测分类:

resu = []
for predict in y_predict:
    resu.append(np.random.choice([0,1],size=1,p = [1-predict[0], predict[0]])[0])
print(resu)

在这里插入图片描述
而真实值,如下图:
在这里插入图片描述
上面在训练中将-1处理为了0,故这里真实值是全0
但,其实说明不了问题的,因为直接使用了训练数据来测试,无疑是不对的。
不妨用iloc那个方法来切两半,一半训练0.8,一半测试0.2。当然,这里不做了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦否

文章对你有用?不妨打赏一毛两毛

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值