我正在尝试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)
但是,当使用三个标签时,它也会输出三个表。
categories = ['alt.atheism', 'soc.religion.christian', 'comp.graphics']
Run Code Online (Sandbox Code Playgroud)
它在第一个输出中错过了 y=0 是软件中的错误,还是我错过了统计点? …
假设构造的数据帧如
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)
?谢谢!
我正在sklearn管道中使用sklearn-pandas DataFrameMapper.为了评估特征联合管道中的特征贡献,我喜欢测量估计器的系数(Logistic回归).对于下面的代码示例中,三个文本内容列a, b和c被矢量化和选择用于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
以下示例脚本输出预测值和预测概率:
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)
问题:有没有一种方法可以一步获得预测值和预测概率,而无需运行两次交叉验证?另外,我必须确保值和概率对应于相同的输入数据。
我有以下专栏:
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)
我怎样才能做到这一点?
我想知道为什么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
任何想法?
我确实有一个像这样的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)
这该怎么做 :)?
执行函数后,我有以下数据结构:
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解决方案赞赏
谢谢!
我有一个与Gatsby.js相关的问题,或者说基于React的静态博客系统.
在查看Stripe,Google Cloud等网页时,该页面似乎会加载点击.加载内容直到显示为止需要几毫秒.通过Gatsby.js,当我看到网站时,内容立即可见.
问题:这是否意味着Gatsby.js将所有页面内容预加载到DOM中?我有一个包含大约10个静态页面和100个博客文章的页面,每个页面有5-10个图像.因此,我不确定系统的速度是否只对某个页面和内容大小有意义?是权衡:整页的初始页面加载(兆字节?)与每次点击的页面加载(千字节?)?
一个简单的答案将不胜感激,谢谢!
在使用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'}
有办法同时使用两者吗?
scikit-learn ×4
python ×3
dataframe ×2
pandas ×2
r ×2
coefficients ×1
css ×1
dplyr ×1
gatsby ×1
jekyll ×1
keras ×1
nlp ×1
prediction ×1
reactjs ×1
regression ×1
reshape ×1
summary ×1
wrapper ×1