我正在做一个小项目,试图在我的数据不平衡的情况下应用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) 我想重置 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)
但它不起作用。
我正在使用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在我用校准器包装分类器的情况下如何获得?,我对这种方式并不完全感兴趣,因此如果有另一种方式来获得特征重要性,它将受到欢迎。
我有一个使用 MySql 数据库的 C# 应用程序。我使用 HTML 构建了一个报告。
我用标签填充字符串属性并将内容发送到新表单中的 WebBrowser 控件。
报告显示正确,但是当我调用打印预览对话框时,
webBrowser1.ShowPrintPreviewDialog();
Run Code Online (Sandbox Code Playgroud)
页眉和页脚显示在报告中,并带有以下值:
这是该问题的屏幕截图:
如何删除页眉和页脚?
我想使用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) 今天我正在研究 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 字符串..有什么问题?!
我正在 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) 我需要在树中循环以获取所有可能的路径,我的代码中的问题是我只得到第一个路径!
在图中,有 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) 下面我有一个列表和字典,其值如下。该字典具有与列表值关联的键。
我想要的是使用字典中列表的值搜索列表中的字符串,并且每个匹配捕获相应的键值,并使用上面列出的每个匹配的键值创建一个新列表。
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)