小编Chr*_*her的帖子

eli5:带有两个标签的 show_weights()

我正在尝试eli5以了解术语对某些类的预测的贡献。

你可以运行这个脚本:

import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.datasets import fetch_20newsgroups

#categories = ['alt.atheism', 'soc.religion.christian']
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics']

np.random.seed(1)
train = fetch_20newsgroups(subset='train', categories=categories, shuffle=True, random_state=7)
test = fetch_20newsgroups(subset='test', categories=categories, shuffle=True, random_state=7)

bow_model = CountVectorizer(stop_words='english')
clf = LogisticRegression()
pipel = Pipeline([('bow', bow),
                 ('classifier', clf)])

pipel.fit(train.data, train.target)

import eli5
eli5.show_weights(clf, vec=bow, top=20)
Run Code Online (Sandbox Code Playgroud)

问题:

使用两个标签时,不幸的是输出仅限于一张表:

categories = ['alt.atheism', 'soc.religion.christian']
Run Code Online (Sandbox Code Playgroud)

图 1

但是,当使用三个标签时,它也会输出三个表。

categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics']
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

它在第一个输出中错过了 y=0 是软件中的错误,还是我错过了统计点? …

nlp regression scikit-learn

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

R:更改行顺序

假设构造的数据帧如

df = data.frame(replicate(2,sample(0:10,2,rep=TRUE)))
df = t(df)
df
Run Code Online (Sandbox Code Playgroud)

返回类似的东西

   [,1] [,2]
X1    9    8
X2   10    4
Run Code Online (Sandbox Code Playgroud)

这是一个问题:如何更改行的顺序,以便:

   [,1] [,2]
X2   10    4
X1    9    8
Run Code Online (Sandbox Code Playgroud)

?谢谢!

r

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

管道中LogisticRegression的_coef值太多

我正在sklearn管道中使用sklearn-pandas DataFrameMapper.为了评估特征联合管道中的特征贡献,我喜欢测量估计器的系数(Logistic回归).对于下面的代码示例中,三个文本内容列a, bc被矢量化和选择用于X_train:

import pandas as pd
import numpy as np
import pickle
from sklearn_pandas import DataFrameMapper
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
np.random.seed(1)

data = pd.read_csv('https://pastebin.com/raw/WZHwqLWr')
#data.columns

X = data.copy()
y = data.result
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)

mapper = DataFrameMapper([
        ('a', CountVectorizer()),
        ('b', CountVectorizer()),
        ('c', CountVectorizer())
])

pipeline = Pipeline([
        ('featurize', mapper),
        ('clf', LogisticRegression(random_state=1))
        ])

pipeline.fit(X_train, y_train) …
Run Code Online (Sandbox Code Playgroud)

scikit-learn logistic-regression coefficients sklearn-pandas

4
推荐指数
2
解决办法
285
查看次数

Cross_val_predict:一步获得预测值和预测概率

以下示例脚本输出预测值和预测概率:

from sklearn import datasets, linear_model
from sklearn.model_selection import cross_val_predict
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
lg = linear_model.LogisticRegression(random_state=0, solver='lbfgs')
y_prob = cross_val_predict(lg, X, y, cv=4, method='predict_proba')
y_pred = cross_val_predict(lg, X, y, cv=4)

y_prob[0:5]
y_pred[0:5]
Run Code Online (Sandbox Code Playgroud)

我尝试以下但没有成功:

test = cross_val_predict(lg, X, y, cv=4, method=['predict','predict_proba'])
Run Code Online (Sandbox Code Playgroud)

问题:有没有一种方法可以一步获得预测值和预测概率,而无需运行两次交叉验证?另外,我必须确保值和概率对应于相同的输入数据。

prediction scikit-learn cross-validation

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

为 DataFrame 列中的值设置上限和下限

我有以下专栏:

 Column 1
 1
 10
 5
 100
 50
 1000
 50000
 2000
 100
 1000
 3000
 ...
Run Code Online (Sandbox Code Playgroud)

我想为 Col1 中的每一行分配一个 >= 1000 的值,Col 2 中的值 1000 和每个值 <= 100 的值 100。

 Column 1   Column 2
 1          100
 10         100
 5          100
 100        100
 50         100
 1000       1000
 50000      1000
 2000       1000
 100        100
 1000       1000
 3000       1000
 ...
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python dataframe pandas

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

Jekyll 站点地图排除不起作用

我想知道为什么main.css仍然出现在我的期末考试中sitemap.xml。我没有使用任何站点地图插件in _config.yml

/sitemap.xml在的代码中,它说:

{% for page in site.pages %}
    {% unless page.sitemap.exclude == "yes" %}
Run Code Online (Sandbox Code Playgroud)

所以我在上面添加了以下内容/css/main.scss

---

sitemap:
exclude: yes

---
Run Code Online (Sandbox Code Playgroud)

仍然main.css出现在/_site/sitemap.xml

任何想法?

css jekyll

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

重命名熊猫中的值

我确实有一个像这样的DataFrame:

col1  col 2
abc   sure
def   yes
ghi   no
jkl   no 
mno   sure
pqr   yes
stu   sure
Run Code Online (Sandbox Code Playgroud)

我的意图是将“ sure”和“ yes”重命名为“ confirm”,以使DataFrame看起来像:

col1  col 2
abc   confirm
def   confirm
ghi   no
jkl   no 
mno   confirm
pqr   confirm
stu   confirm
Run Code Online (Sandbox Code Playgroud)

这该怎么做 :)?

python pandas

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

如何将命名向量更改为保留名称的数据框?

执行函数后,我有以下数据结构:

      A       B       C        D        E       
      92.08   90.68   54.09    92.87    97.40    

      F       G       H        I        J       ...       
      24.52   67.24   15.63    22.33    45.10   ...  
Run Code Online (Sandbox Code Playgroud)

作为最终结果,我希望将数据放在一个简单的数据框中,将字母作为行和值放在一列中.以下工作,虽然我很好奇这是否是最优雅的方式(?):

output <- data.frame(output)
output <- data.frame(rownames(output), rowSums(output))
colnames(output) <- c("Category", "Value")
output
output %>% arrange(desc(output))
Run Code Online (Sandbox Code Playgroud)

如果你有想法让它变得更好,请随时纠正我. dplyr解决方案赞赏

谢谢!

r transformation reshape dataframe dplyr

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

gatsby.js:内容预加载如何工作?

我有一个与Gatsby.js相关的问题,或者说基于React的静态博客系统.

在查看Stripe,Google Cloud等网页时,该页面似乎会加载点击.加载内容直到显示为止需要几毫秒.通过Gatsby.js,当我看到网站时,内容立即可见.

问题:这是否意味着Gatsby.js将所有页面内容预加载到DOM中?我有一个包含大约10个静态页面和100个博客文章的页面,每个页面有5-10个图像.因此,我不确定系统的速度是否只对某个页面和内容大小有意义?是权衡:整页的初始页面加载(兆字节?)与每次点击的页面加载(千字节?)?

一个简单的答案将不胜感激,谢谢!

reactjs gatsby

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

keras:返回model.summary()与scikit学习包装器

在使用keras时,我了解到使用包装器会对keras和scikit学习api请求产生不利影响。我对同时拥有这两种解决方案感兴趣。

变体1:scikit包装

from keras.wrappers.scikit_learn import KerasClassifier

    def model():
        model = Sequential()
        model.add(Dense(10, input_dim=4, activation='relu'))
        model.add(Dense(3, activation='softmax'))
        model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
        return model

estimator = KerasClassifier(build_fn=model, epochs=100, batch_size=5)
model.fit(X, y)
Run Code Online (Sandbox Code Playgroud)

->这使我可以打印scikit命令,例如precision_score()或category_report()。但是,model.summary()不起作用:

AttributeError:“ KerasClassifier”对象没有属性“ summary”

形式2:无包装

model = Sequential()
model.add(Dense(10, input_dim=4, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, y, epochs=100, batch_size=5)
Run Code Online (Sandbox Code Playgroud)

->这使我可以打印model.summary()而不是scikit命令。

ValueError:不允许使用y的混合类型,类型为{'multiclass','multilabel-indicator'}

有办法同时使用两者吗?

python summary wrapper scikit-learn keras

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