小编Sim*_*mon的帖子

sklearn - 模型保持过度拟合

我正在寻找关于我当前机器学习问题的最佳前进方法的建议

问题的概要和我所做的如下:

  • 我有900多个EEG数据试验,每个试验的时间长达1秒.每个人都知道基本事实并将状态0和状态1分类(40-60%分裂)
  • 每个试验都经过预处理,我可以过滤和提取某些频段的功率,这些组成了一组特征(特征矩阵:913x32)
  • 然后我用sklearn训练模型.在我使用0.2的测试大小的地方使用cross_validation.使用rbf内核将分类器设置为SVC,C = 1,gamma = 1(我尝试了许多不同的值)

你可以在这里找到一个缩短版的代码:http://pastebin.com/Xu13ciL4

我的问题:

  • 当我使用分类器来预测我的测试集的标签时,每个预测都是0
  • 列车精度为1,而测试设定精度约为0.56
  • 我的学习曲线图看起来像这样:

在此输入图像描述

现在,这似乎是过度拟合的经典案例.然而,这里的过度拟合不太可能是由于样本的特征数量不成比例(32个特征,900个样本).我已经尝试了很多方法来缓解这个问题:

  • 我尝试过使用降维(PCA),因为我的样本数量太多了,但是准确度得分和学习曲线图看起来和上面一样.除非我将组件数量设置为低于10,否则列车精度开始下降,但鉴于您开始丢失信息,这是不是有点预期?
  • 我已经尝试了规范化和标准化数据.标准化(SD = 1)无助于改变训练或准确度分数.归一化(0-1)会将训练精度降低到0.6.
  • 我已经为SVC尝试了各种C和gamma设置,但它们不会改变任何一个分数
  • 尝试使用像GaussianNB这样的其他估算器,甚至像adaboost这样的集成方法.没变
  • 试图使用linearSVC设置正则化方法,但没有改善这种情况
  • 我尝试使用theano通过神经网络运行相同的功能,我的列车精度约为0.6,测试值约为0.5

我很高兴继续思考这个问题,但此时我正在寻找正确方向的推动力.我的问题可能在哪里,我可以做些什么来解决它?

完全有可能我的一组功能只是不区分这两个类别,但我想在跳到这个结论之前尝试其他一些选项.此外,如果我的功能没有区分,那么这将解释低测试组分数,但在这种情况下如何获得完美的训练集分数?那可能吗?

python signal-processing machine-learning svm scikit-learn

3
推荐指数
1
解决办法
1812
查看次数

是否可以从我的共享扩展保存文件中获取主应用程序中的文件?

是否可以从我的共享扩展名中获取保存文档文件?

我尝试构建共享扩展,共享扩展可以获取文件路径。我编写了一个函数来将文件保存到我的文档文件夹中。

我需要从我的主应用程序获取文件。但我发现我从共享扩展路径保存文件是

/var/mobile/Containers/Data/PluginKitPlugin/9EBF8983-E1DE-49E2-8589-CEE7305EB644/Documents/xxx.png

我使用主应用程序来获取文档路径如下

/var/mobile/Containers/Data/Application/CFD67CD9-5A8A-473E-8ECF-FC1C1CF18098/Documents

文件夹 ID 不相同。

是否可以从共享扩展名保存的文件中获取文件?非常感谢。

share ios

3
推荐指数
1
解决办法
3852
查看次数

神经网络(非)线性

在讨论神经网络时,我对使用术语线性/非线性感到困惑.任何人都可以为我澄清这3点:

  1. 神经网络中的每个节点都是输入的加权和.这是输入的线性组合.因此,每个节点的值(忽略激活)由一些线性函数给出.我听说神经网络是通用函数逼近器.这是否意味着,尽管每个节点中包含线性函数,但总网络也能够逼近非线性函数?有没有明确的例子说明这在实践中是如何运作的?
  2. 激活函数被应用于该节点的输出以压缩/变换输出以进一步传播通过网络的其余部分.我是否正确地将激活函数的输出解释为该节点的"强度"?
  3. 激活函数也称为非线性函数.非线性一词来自哪里?因为激活的输入是输入到节点的线性组合的结果.我假设它指的是像sigmoid函数这样的东西是非线性函数?为什么激活是非线性的呢?

machine-learning nonlinear-functions neural-network

2
推荐指数
1
解决办法
1206
查看次数

Pandas表示匹配条件后的行

假设我有一个Pandas数据框,如下所示:

import pandas as pd
import numpy as np

df = pd.DataFrame({"time": [100,200,300,400,100,200,300,np.nan],
                   "correct": [1,1,0,1,1,0,0,0]})
Run Code Online (Sandbox Code Playgroud)

印刷:

   correct   time
0        1  100.0
1        1  200.0
2        0  300.0
3        1  400.0
4        1  100.0
5        0  200.0
6        0  300.0
7        0    NaN
Run Code Online (Sandbox Code Playgroud)

我想计算的平均值time仅为行以下行,其中correct等于0.因此,在上述数据帧我想计算的平均值400,300以及NaN(这将给350)

我需要小心处理NaN值,以及最后一行有correct == 0但在其后面没有行的文字边缘情况

什么是最有效的方式在Pandas中执行此操作而不必诉诸循环数据框(我当前的实现)?

python mean dataframe pandas

2
推荐指数
1
解决办法
481
查看次数

仅具有一个数字特征的逻辑回归

当您只有一个数字特征时,使用scikit-learn's LogisticRegressionsolver的正确方法是什么?

我运行了一个我发现很难解释的简单示例。谁能解释一下我在这里做错了什么?

import pandas
import numpy as np
from sklearn.linear_model import LogisticRegression

X = [1, 2, 3, 10, 11, 12]
X = np.reshape(X, (6, 1))
Y = [0, 0, 0, 1, 1, 1]
Y = np.reshape(Y, (6, 1))

lr = LogisticRegression()

lr.fit(X, Y)
print ("2 --> {0}".format(lr.predict(2)))
print ("4 --> {0}".format(lr.predict(4)))
Run Code Online (Sandbox Code Playgroud)

这是我在脚本完成运行时得到的输出。4 的预测不应该是 0,因为根据高斯分布 4 更接近根据测试集分类为 0 的分布?

2 --> [0]
4 --> [1]
Run Code Online (Sandbox Code Playgroud)

当您只有一列包含数字数据时,Logistic 回归采用什么方法?

python machine-learning scikit-learn logistic-regression

2
推荐指数
1
解决办法
4107
查看次数

方差分析不显着,但系数变量显着?

我根据广义最小二乘模型(长寿〜交配系统)生成了方差分析,结果不显着(0.08)。然而,当我使用summary()运行模型时,我可以看到每个系数(交配系统的类型)都很重要。

根据我(多次)阅读的内容,方差分析显示自变量的方差是否可以通过因变量来显着解释。回归模型将测试因变量如何随着自变量水平的变化而变化。

然而,我觉得我错过了一些东西,因为我不确定我是否完全理解因变量的单个水平的 p 值的含义,以及方差分析测试中因变量的总体 p 值的含义。

我希望有人能用相当通俗的语言解释我的结果。

statistics regression anova

2
推荐指数
1
解决办法
5006
查看次数

线性回归中多个变量的 p 值是如何计算的?

在此输入图像描述

我想知道如何计算多元线性回归中各种变量的 p 值。我确信在阅读了一些资源后,<5% 表明该变量对模型很重要。但是多元线性回归中每个变量的 p 值是如何计算的呢?

我尝试使用summary()函数查看statsmodels摘要。我只能看到价值观。我没有找到任何关于如何计算多元线性回归中各种变量的 p 值的资源。

import statsmodels.api as sm
nsample = 100
x = np.linspace(0, 10, 100)
X = np.column_stack((x, x**2))
beta = np.array([1, 0.1, 10])
e = np.random.normal(size=nsample)
X = sm.add_constant(X)
y = np.dot(X, beta) + e
model = sm.OLS(y, X)
results = model.fit() 
print(results.summary())
Run Code Online (Sandbox Code Playgroud)

此问题没有错误,但需要直观地了解如何计算多元线性回归中各个变量的 p 值。

python statistics regression data-science

2
推荐指数
1
解决办法
3834
查看次数

为什么在R中这种双向anova中没有显示pvalue,fvalue和残差?

我尝试为肺部数据集执行2路anova.但是,如下所示,我只在输出中接收DF,Sum sq和Mean sq,并且没有数据显示在残差,pvalue和fvalue上.

请帮助我.切实,

summary(aov(volume~ method+subject+ method*subject))
summary(aov(volume~(method)+(subject)+(method)*(subject)))
Run Code Online (Sandbox Code Playgroud)

输出:

> summary(aov(volume~(method)+(subject)+(method)*(subject)))
               Df Sum Sq Mean Sq
method          2 1.0811  0.5406
subject         5 2.1828  0.4366
method:subject 10 0.8322  0.0832
Run Code Online (Sandbox Code Playgroud)

statistics r summary anova lm

1
推荐指数
1
解决办法
87
查看次数

Python正则表达式分数

我正在尝试使用正则表达式将小数(特别是1/2)的实例替换为十进制等效值

string = "7 1/2"
re.sub(r'[1/2]', '.5', string)
Run Code Online (Sandbox Code Playgroud)

首先,我认为上面用.5替换了1,/,2的所有实例,而我试图找到并替换整个术语"1/2"

其次,你如何处理分数本身之前的领先空间?

python regex

0
推荐指数
1
解决办法
339
查看次数