小编Gha*_*nem的帖子

sklearn中带有数据标签的定制变压器Mixin

我正在做一个小项目,试图在我的数据不平衡的情况下应用SMOTE“综合少数族裔过采样技术”。

我为SMOTE功能创建了一个定制的TransformerMixin ..

class smote(BaseEstimator, TransformerMixin):
    def fit(self, X, y=None):
        print(X.shape, ' ', type(X)) # (57, 28)   <class 'numpy.ndarray'>
        print(len(y), ' ', type)     #    57      <class 'list'>
        smote = SMOTE(kind='regular', n_jobs=-1)
        X, y = smote.fit_sample(X, y)

        return X

    def transform(self, X):
        return X
Run Code Online (Sandbox Code Playgroud)
model = Pipeline([
        ('posFeat1', featureVECTOR()),
        ('sca1', StandardScaler()),
        ('smote', smote()),
        ('classification', SGDClassifier(loss='hinge', max_iter=1, random_state = 38, tol = None))
    ])
    model.fit(train_df, train_df['label'].values.tolist())
    predicted = model.predict(test_df)
Run Code Online (Sandbox Code Playgroud)

我在FIT函数上实现了SMOTE,因为我不希望将其应用于测试数据。

不幸的是,我得到了这个错误:

     model.fit(train_df, train_df['label'].values.tolist())
  File "C:\Python35\lib\site-packages\sklearn\pipeline.py", line 248, in fit
    Xt, fit_params = …
Run Code Online (Sandbox Code Playgroud)

python pipeline scikit-learn

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

重置 tqdm 进度条

我想重置 tqdm 进度条。

这是我的代码:

s = tqdm(range(100))
for x in s:
    pass

# Reset it here
s.reset(0)

for x in s:
    pass
Run Code Online (Sandbox Code Playgroud)

Tqdm PB 仅适用于第一个循环。我尝试使用.reset(0)函数重置它,但它不起作用。

上面代码的输出是:

100%|??????????| 100/100 [00:00<?, ?it/s]
Run Code Online (Sandbox Code Playgroud)

我注意到他们在这里使用:Restting progress bar counter this code

pbar.n = 0
pbar.refresh()
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

python-3.x tqdm

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

AttributeError: 'CalibratedClassifierCV' 对象没有属性 'coef_'

我正在使用sklearnSVM 分类器的线性实现LinearSVM

我没有直接使用它,但我将它包装起来CalibratedClassifierCV以获得预测时间内的概率,例如:

model = CalibratedClassifierCV(LinearSVC(random_state=0))
Run Code Online (Sandbox Code Playgroud)

拟合模型后,我尝试coef_打印 Top 特征,按照这篇文章Visualizing Top Features in Linear SVM with Scikit Learn 和 Matplotlib,但是我得到了这个错误:

coef = classifier.coef_.ravel()
AttributeError: 'CalibratedClassifierCV' object has no attribute 'coef_'
Run Code Online (Sandbox Code Playgroud)

coef在我用校准器包装分类器的情况下如何获得?,我对这种方式并不完全感兴趣,因此如果有另一种方式来获得特征重要性,它将受到欢迎。

python feature-selection scikit-learn

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

从 WebBrowser 控件打印时删除页眉和页脚

我有一个使用 MySql 数据库的 C# 应用程序。我使用 HTML 构建了一个报告。

我用标签填充字符串属性并将内容发送到新表单中的 WebBrowser 控件。

报告显示正确,但是当我调用打印预览对话框时,

webBrowser1.ShowPrintPreviewDialog();
Run Code Online (Sandbox Code Playgroud)

页眉和页脚显示在报告中,并带有以下值:

  • 在标题中:页数。
  • 在页脚中:日期和“关于:空白”。

这是该问题的屏幕截图:

在此处输入图片说明

如何删除页眉和页脚?

c# mysql page-setup print-preview winforms

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

将 VotingClassifier 与 Sklearn 管道内的其他分类器一起使用

我想使用VotingClassifier内部 a sklearn Pipeline,在那里我定义了一组分类器 ..

我从这个问题中得到了一些直觉:Using VotingClassifierin Sklearn Pipeline to build the code below,但在这个问题中,每个分类器都在一个独立的管道中定义..我不想以这种方式使用它,我有一个之前准备了一组特征,在具有不同分类器的多管道中重复生成这些特征不是一个好主意(耗时的过程)!

我怎么能做到这一点?!

model = Pipeline([
        ('feat', FeatureUnion([
            ('tfidf', TfidfVectorizer(analyzer='char', ngram_range=(3, 5), min_df=0.01, lowercase=True, tokenizer=tokenizeTfidf)),    
        ])),


        ('pip1', Pipeline([('clf1', GradientBoostingClassifier(n_estimators=1000, random_state=7))])),
        ('pip2', Pipeline([('clf2', SVC())])),
        ('pip3', Pipeline([('clf3', RandomForestClassifier())])),
        ('clf', VotingClassifier(estimators=["pip1", "pip2", "pip3"]))
    ])

clf = model.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)

但我收到了这个错误:

 ('clf', VotingClassifier(estimators=["pip1", "pip2", "pip3"])),
  File "C:\Python35\lib\site-packages\imblearn\pipeline.py", line 115, in __init__
    self._validate_steps()
  File "C:\Python35\lib\site-packages\imblearn\pipeline.py", line 139, in _validate_steps
    "(but not both) '%s' (type %s) doesn't)" % (t, type(t))) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn imblearn

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

Alexa 站点排名 API

今天我正在研究 Alexa API 以使用以下代码获取网站流行度排名:

import urllib.request, sys, re

site = '/sf/'
xml = urllib.request.urlopen('http://data.alexa.com/data?cli=10&dat=s&url=%s'%site).read()
try: rank = int(re.search(r'<POPULARITY[^>]*TEXT="(\d+)"', xml).groups()[0])
except: rank = -1
print('Your rank for %s is %d!\n' % (site, rank))
Run Code Online (Sandbox Code Playgroud)

它运行良好,但突然停止了!,我手动检查了 API 链接:

http://data.alexa.com/data?cli=10&dat=s&url=/sf/
Run Code Online (Sandbox Code Playgroud)

它只返回一个词“好的”而不是一个 XML 字符串..有什么问题?!

python amazon amazon-web-services

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

keras 中的神经网络不收敛

我正在 Keras 中构建一个简单的神经网络,如下所示:

# create model
model = Sequential()
model.add(Dense(1000, input_dim=x_train.shape[1], activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# Compile model
model.compile(loss='mean_squared_error', metrics=['accuracy'], optimizer='RMSprop')
# Fit the model
model.fit(x_train, y_train, epochs=20, batch_size=700, verbose=2)
# evaluate the model
scores = model.evaluate(x_test, y_test, verbose=0)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
Run Code Online (Sandbox Code Playgroud)

使用的数据的形状是:

x_train = (49972, 601) 
y_train = (49972, 1)
Run Code Online (Sandbox Code Playgroud)

我的问题是网络没有收敛,精度固定为 0.0168,如下所示:

Epoch 1/20
 - 1s - loss: 3.2222 - acc: 0.0174
Epoch 2/20
 - 1s - loss: 3.1757 - acc: 0.0187
Epoch 3/20
 - 1s - loss: …
Run Code Online (Sandbox Code Playgroud)

python neural-network scikit-learn keras

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

获取树结构中所有可能的路径

我需要在树中循环以获取所有可能的路径,我的代码中的问题是我只得到第一个路径!

例子: 在此输入图像描述

在图中,有 2 个路径 t 句柄: 1-2-3-4-5-6 和 1-2-3-7-8 ,但我无法同时获取这两个路径,我刚刚检索了 1-2-3 -4-5-6!

我的代码:

主要内容:

for (String key : synset.keySet()) { // looping in a hash of Concept and it's ID
        System.out.println("\nConcept: " + key + " " + synset.get(key));
        List<Concept> ancts = myOntology.getConceptAncestors(myOntology.getConceptFromConceptID(synset.get(key))); // this function retreives the root of any node.

        for (int i = 0; i < ancts.size(); i++) {
            System.out.print(ancts.get(i).getConceptId() + " # ");
            System.out.print(getChilds(ancts.get(i).getConceptId()) + " -> "); // here, the recursive function is needed …
Run Code Online (Sandbox Code Playgroud)

java tree recursion ontology wordnet

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

从具有字典列表值的列表中搜索字符串值

下面我有一个列表和字典,其值如下。该字典具有与列表值关联的键。

我想要的是使用字典中列表的值搜索列表中的字符串,并且每个匹配捕获相应的键值,并使用上面列出的每个匹配的键值创建一个新列表。

list = ['man', 'men', 'boy', 'buoy', 'cat','caat']
dict={'man':['man', 'men', 'mun'], 'boy':['boy','buoy','bay'], 'cat':['cat','caat','cut']}
Run Code Online (Sandbox Code Playgroud)

上述情况的预期输出为: Outputlist=['man','man','boy','boy','cat','cat']

当我尝试同样的操作时,我只得到一个匹配的项目,如下所示。

lis = ['man', 'men', 'boy', 'buoy', 'cat','caat']
dic={'man':['man', 'men', 'mun'], 'boy':['boy','buoy','bay'], 'cat':['cat','caat','cut']}
for key,value in dic.items():
    if value in lis:
        output.append(key)
print(output)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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