- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 ML 领域的新手,正在学习它,我按照教程制作了一个模型,但结果准确性总是很快跃升至 100%。我在网上搜索并发现根据我的理解我有与模型过度拟合相关的问题。我使用的数据集非常小,来自 UCI 网站,名为“印度肝脏患者数据集”。该数据集包含 600 左右的很少观察值。
我的问题是如何克服数据中的过度拟合。任何帮助将不胜感激,谢谢。
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import scikitplot as skplt
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
df = pd.read_csv("C:/TF/TEST/ILDP.csv")
df["ag_ratio"].fillna("0.6", inplace=True)
df.isnull().sum()
print(df.head())
LD, NLD = df['is_patient'].value_counts()
df_sex = pd.get_dummies(df['gender'])
df_new = pd.concat([df, df_sex], axis=1)
Droop_gender = df_new.drop(labels=['gender'], axis=1)
Droop_gender.columns = ['age', 'tot_bilirubin', 'direct_bilirubin', 'tot_proteins', 'albumin', 'ag_ratio',
'sgpt', 'sgot', 'alkphos', 'Female', 'Male', 'is_patient']
X = Droop_gender.drop('is_patient', axis=1)
y = Droop_gender['is_patient']
print(X.shape)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
classifier = Sequential() # Initialising the ANN
classifier.add(Dense(units=16, kernel_initializer='uniform', activation='relu', input_dim=11))
classifier.add(Dense(units=8, kernel_initializer='uniform', activation='relu'))
classifier.add(Dense(units=6, kernel_initializer='uniform', activation='relu'))
classifier.add(Dense(units=1, kernel_initializer='uniform', activation='sigmoid'))
# compile ANN
classifier.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
# Fitting the data
histroy = classifier.fit(X_train, y_train, batch_size=20, epochs=50)
y_pred = classifier.predict(X_test)
y_pred = [1 if y >= 0.5 else 0 for y in y_pred]
print(classification_report(y_test, y_pred))
最佳答案
您的模型过度拟合是令人鼓舞的,因为这意味着您的模型具有学习能力。现在你必须逐渐减少模型的容量以使其具有更好的泛化能力。我的建议是添加正则化。
在一些完全连接的层之间添加丢失层:
classifier.add(Dense(units=16, kernel_initializer='uniform', activation='relu', input_dim=11))
classifier.add(keras.layers.Dropout(0.5))
classifier.add(Dense(units=8, kernel_initializer='uniform', activation='relu'))
您可以添加这些 dropout任何层之间都有层,但在具有更多神经元的层之间添加层更好。
如果这不起作用,你可以尝试权重衰减。以下是文档中的示例:
from keras import regularizers
model.add(Dense(64, input_dim=64,
kernel_regularizer=regularizers.l2(0.01),
activity_regularizer=regularizers.l1(0.01)))
尽管首先尝试kernel_regularize 或activity_regularizer。无论如何,它们的工作原理应该是相同的。尝试调整并查看不同参数如何变化。最后,它有很多黑魔法,所以你必须进行一些实验。祝你好运!
关于python - ANN 实现过度拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56101603/
我知道可以使用CvFileStorage将受过训练的ANN保存到文件中,但是我真的不喜欢CvFileStorage保存培训的方式,然后我想知道:是否有可能检索培训的信息并将其保存在自定义方式? 提前致
我是 ML 领域的新手,正在学习它,我按照教程制作了一个模型,但结果准确性总是很快跃升至 100%。我在网上搜索并发现根据我的理解我有与模型过度拟合相关的问题。我使用的数据集非常小,来自 UCI 网站
我用 Keras 制作了我的第一个 ANN。它是一个具有 5 个特征和 1 个输出的线性回归模型。我用“MSE”和“损失函数”画了一个图,这些是结果。我们能说它是一个好模型吗?另外 R^2 = 0.9
所以我正在尝试用感知器来训练或门。问题是它不起作用。错误的是 0 0 ->desired = 0,actual = 1。并且该值不会改变。 此外,当我输入要测试的权重时,它们似乎也根本不起作用,但这可
第一次用python,有很多疑惑。 我正尝试在 Pybrain 中制作一个用于预测的简单 ANN。它是一个 2 输入 - 1 输出网络。输入是,第一列中有年份,第二列中有月份。输出是与每个月相关的正常
我正在 MATLAB 中为监督分类任务实现一个神经网络。 我有一个训练集和一个测试集来评估结果。问题是,每次我为同一个训练集训练网络时,我都会为同一个测试集得到非常不同的结果(有时我得到 95% 的分
我正在使用 ANN 库 ( https://www.cs.umd.edu/~mount/ANN/ )。有一个功能 ANNkdTree::getStats(ANNkdStats &st) 提供 kdtr
以下训练曲线是使用用 Python 编写的相同 Tensorflow + Keras 脚本生成的: RED 线使用五个特征。 绿线使用七个特征。 蓝线使用九个特征。 谁能告诉我绿线振荡的可能原因,以便
我正在尝试执行 ANN,但我的数据被分成多个分区或“租户”。搜索始终仅限于单个租户,这只占文档总数的一小部分。 我首先尝试在租户字符串属性上使用过滤器来实现这一点。然而,我遇到了this piece
我最近开始研究 ANN,有一些我一直在试图弄清楚我似乎无法找到答案的东西(可能是因为它太琐碎了,或者因为我正在搜索错误的关键字......)。 什么时候使用多输出而不是单输出?我想在 1/0 分类的最
我刚刚被安排了一项任务来计算一些 ANN 输出并编写一个 ANN。简单的东西,以前做过,所以我不需要任何关于一般 ANN 东西的帮助。然而,有一点让我感到困惑。在作业中,拓扑如下(不会上传图表,因为它
我正在使用 python2,我正在尝试获取隐藏层的激活。我正在使用以下代码,但出现错误: get_activations = theano.function([my_model.layers[0].i
前言:我目前正在学习 ANN,因为我在大约 83 个类别中有大约 18500 张图像。它们将用于训练 ANN 以实时识别大致相等的图像。我按照书中的图像示例进行操作,但它对我不起作用。所以我要回到开头
刚刚用 python 编写了我的第一个神经网络类。据我所知,一切都应该有效,但其中有一些我似乎找不到的错误(可能正盯着我的脸)。我首先在 MNIST 数据的 10,000 个示例上进行了尝试,然后在尝
我的神经网络输入参数包含符号数据。我不明白是否可以以这种形式提交数据或需要标准化。难道不是吗?我该如何解决它? 最佳答案 神经网络不是符号网络。它们仅处理数字数据。如果“符号”指的是分类(如“猫”、“
我是 tensorflow 的初学者,需要获取预测值(如果客户是否订阅定期存款)作为给定数据帧作为输入的多感知 ANN 模型的输出(以数据帧格式)。银行事件..我们正在引用这个样本 https://g
很抱歉问了这个愚蠢的问题,但我是 ANN 世界的新手,因为我正在制作自己的项目,所以我想确切地知道我正在做的一切。 所以我仍然不明白变量中权重和偏差的存储是如何工作的。 它们是放在数组中还是矩阵中?那
我目前正在使用反向传播来开发 ANN,用于分类任务。然而,我对标准化我正在使用的数据集有点困惑(我没有很强的统计/概率背景)。 数据示例如下所示: 5.1, 3.5, 1.4, 0.2, 1 5.2,
我看过很多网站和博客解释 ANN(人工神经网络),但没有一个网站和博客考虑到为不太了解 ANN 的人逐步开发基础的过程,而是投入了很多数学,不幸的是对我来说看起来非常难以捉摸。是否有任何网站/博客教授
我参与了很多 C 编程和 RT-Linux,现在我想做一些人工神经网络。 但是:我该如何开始? 我对进化算法(学习算法)和人工智能也很感兴趣。我可以从哪里开始学习所有这些? 最佳答案 如果您只是想熟悉
我是一名优秀的程序员,十分优秀!