我正在尝试使用 GridsearchCV 在 sklearn 中调整 GB 分类器。这是代码:
from sklearn.grid_search import GridSearchCV
from sklearn.ensemble import GradientBoostingClassifier
param_grid = {'learning_rate': [0.1, 0.01, 0.001],
'max_depth': [4, 6],
'min_samples_leaf': [9, 17],
'max_features': [0.3, 0.1]}
est = GradientBoostingClassifier(n_estimators=3000)
# this may take some minutes
gs_cv = GridSearchCV(est, param_grid, scoring='f1', n_jobs=-1, verbose=1, pre_dispatch=5).fit(X.values, y)
# best hyperparameter setting
print 'Best hyperparameters: %r' % gs_cv.best_params_
Run Code Online (Sandbox Code Playgroud)
数据集 X 是 100 万行 * 245 个特征。我在一台接近 32 个内核的机器上运行。当我运行上面的代码时出现以下错误,
error Traceback (most recent call last)
<ipython-input-22-cb545fec9989> in <module>()
9 est = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试根据 yelp 数据集构建一个基于项目的推荐系统。我设法在一定程度上处理数据,使我获得所有在给定状态下评论餐厅的用户给出的评分。最终,我想得到一个评分矩阵,其中一个轴是餐厅,另一轴是用户,中间是评分(1-5)(缺少评论为零)。
现在 DF 看起来像这样:
user_id review_id business_id stars
0 Xqd0DzHaiyRqVH3WRG7 15SdjuK7DmYqUAj6rjGowg vcNAWiLM4dR7D2nwwJ7nCA 5
1 Xqd0DzHaiyRqVH3WRG7 15SdjuK7DmYqUAj6rjGowg vcNAWiLM4dR7D2nwwJ7nCA 5
2 H1kH6QZV7Le4zqTRNxo RF6UnRTtG7tWMcrO2GEoAg vcNAWiLM4dR7D2nwwJ7nCA 2
3 zvJCcrpm2yOZrxKffwG -TsVN230RCkLYKBeLsuz7A vcNAWiLM4dR7D2nwwJ7nCA 4
4 KBLW4wJA_fwoWmMhiHR dNocEAyUucjT371NNND41Q vcNAWiLM4dR7D2nwwJ7nCA 4
5 zvJCcrpm2yOZrxKffwG ebcN2aqmNUuYNoyvQErgnA vcNAWiLM4dR7D2nwwJ7nCA 4
6 Qrs3EICADUKNFoUq2iH _ePLBPrkrf4bhyiKWEn4Qg vcNAWiLM4dR7D2nwwJ7nCA 1
Run Code Online (Sandbox Code Playgroud)
但我希望它看起来更像这样:
(4 家餐厅 x 5 位用户)
0 4 3 4 5
3 3 3 2 1
1 2 3 4 5
0 5 3 3 4
Run Code Online (Sandbox Code Playgroud) 我试图找出应用于列表的操作.我有列表/数组名称预测,并执行以下一组指令.
predictions[predictions < 1e-10] = 1e-10
Run Code Online (Sandbox Code Playgroud)
此代码段来自使用Numpy的Udacity Machine Learning分配.
它以下列方式使用:
def logprob(predictions, labels):
"""Log-probability of the true labels in a predicted batch."""
predictions[predictions < 1e-10] = 1e-10
return np.sum(np.multiply(labels, -np.log(predictions))) / labels.shape[0]
Run Code Online (Sandbox Code Playgroud)
正如@MosesKoledoye和其他各方所指出的那样,它实际上是一个Numpy阵列.(Numpy是一个Python库)
这条线做什么?
这是我的任务,对于我的生活,我似乎无法想办法.这是我到目前为止的代码:
sum = 0
k = 1
while k <= 0.0001:
if k % 2 == 1:
sum = sum + 1.0/k
else:
sum = sum - 1.0/k
k = k + 1
print()
Run Code Online (Sandbox Code Playgroud)
这是我的任务:
创建一个名为sumseries.py的python程序,它执行以下操作:将注释放在程序顶部,并附上您的名称,日期和程序的描述.
编写一个程序来计算和显示系列的总和:
1 - 1/2 + 1/3 - 1/4 + ......
直到达到小于0.0001的期限.
10,000次迭代的答案似乎是0.6930971830599583
我以1,000,000,000(十亿)次迭代运行该程序,并提出了一些0.6931471810606472.我需要创建一个循环来可编程地创建系列.
我正在使用Python,使用any()这样来查找String[]
数组和从Reddit的API中提取的注释之间的匹配.
目前,我这样做:
isMatch = any(string in comment.body for string in myStringArray)
Run Code Online (Sandbox Code Playgroud)
但是,不仅知道它isMatch
是否属实,而且它的哪个元素myStringArray
具有匹配性也是有用的.有没有办法用我目前的方法做到这一点,还是我必须找到一种不同的方式来搜索匹配?
我面临TypeError:sort_values()缺少1个必需的位置参数:“ by”
for i in range(0,len(data_sims.index)):
for j in range(1,len(data_sims.columns)):
user = data_sims.index[i]
serial = data_sims.columns[j]
if dataUser.ix[i][j] == 1:
data_sims.ix[i][j] = 0
else:
serial_top_names = data_neighbours.ix[serial][1:10]
serial_top_sims = dataSim.ix[serial].sort_values(ascending=False)[1:10]
user_preferences = dataUser.ix[user,serial_top_names]
data_sims.ix[i][j] = getScore(user_preferences,serial_top_sims)
Run Code Online (Sandbox Code Playgroud)
详细错误:
> ------------------------------------------------- -------------------------- TypeError跟踪(最近一次通话) 在()中 其他9个: 10 serial_top_names = data_neighbours.ix [serial] [1:10] ---> 11 serial_top_sims = dataSim.ix [serial] .sort_values(ascending = False)[1:10] 12个user_preferences = dataUser.ix [user,serial_top_names] 13 TypeError:sort_values()缺少1个必需的位置参数:“ by”
我尝试使用关注但没有用
pd.DataFrame.sort_values(dataSim,ascending=[0])[1:10]
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?
我在学习R和一个简单的ifelse语句之后尝试学习Python.
在RI有:
df$X <- if(df$A == "-1"){-df$X}else{df$X}
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在Python中实现它,我尝试过:
df['X'][df['A'] <1] = -[df['X']
df['X'][df['A'] >1] = [df['X']
Run Code Online (Sandbox Code Playgroud)
但这会导致错误,会感激一些帮助.
我使用了sklearn标准分析器(平均去除和方差缩放)来缩放数据帧并将其与数据帧进行比较,其中我"手动"减去平均值并除以标准偏差.比较显示了一致的微小差异.谁能解释为什么?(我使用的数据集是:http://archive.ics.uci.edu/ml/datasets/Wine
import pandas as pd
from sklearn.preprocessing import StandardScaler
df = pd.read_csv("~/DataSets/WineDataSetItaly/wine.data.txt", names=["Class", "Alcohol", "Malic acid", "Ash", "Alcalinity of ash", "Magnesium", "Total phenols", "Flavanoids", "Nonflavanoid phenols", "Proanthocyanins", "Color intensity", "Hue", "OD280/OD315 of diluted wines", "Proline"])
cols = list(df.columns)[1:] # I didn't want to scale the "Class" column
std_scal = StandardScaler()
standardized = std_scal.fit_transform(df[cols])
df_standardized_fit = pd.DataFrame(standardized, index=df.index, columns=df.columns[1:])
df_standardized_manual = (df - df.mean()) / df.std()
df_standardized_manual.drop("Class", axis=1, inplace=True)
df_differences = df_standardized_fit - df_standardized_manual
df_differences.iloc[:,:5]
Alcohol Malic acid …
Run Code Online (Sandbox Code Playgroud) 我已经从 JSON 导入到 DataFrame 中:
res = pd.io.json.json_normalize(response['candles'])
complete mid.c mid.h mid.l mid.o time volume
3000 True 1.48257 1.48902 1.47545 1.48299 2011-05-02T21:00:00.000000000Z 46718
3001 True 1.48271 1.49402 1.47752 1.48254 2011-05-03T21:00:00.000000000Z 49927
Run Code Online (Sandbox Code Playgroud)
重新排序列并创建新的 DataFrame 并设置 DatetimeIndex:
...
newRes = res
newRes = newRes.set_index(pd.DatetimeIndex(newRes['time']))
time
2002-05-06 21:00:00 2002-05-06T21:00:00.000000000Z 0.91535 0.91535 0.91535 0.91535 1 True
2002-05-07 21:00:00 2002-05-07T21:00:00.000000000Z 0.90435 0.90435 0.90435 0.90435 1 True
Run Code Online (Sandbox Code Playgroud)
创建了另一个 df
df = newRes[['mid.c']].copy()
time mid.c
2002-05-06 21:00:00 0.91535
2002-05-07 21:00:00 0.90435
Run Code Online (Sandbox Code Playgroud)
现在简单的 pct_change 会抛出错误。
df['rtns'] = df['mid.c'].pct_change(1) …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Python 程序,该程序将分发给我们的客户。
他们的要求是程序应该在没有他们手动干预的情况下处理一切。
如何在执行代码时检查并安装Python中缺少的模块?在 R 中,我可以使用下面提供的代码。
如何在 Python 中复制类似的东西?
# Check and install missing packages in R
list.of.packages <- c("RDCOMClient", "htmlTable")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages) > 0) {
install.packages(new.packages)
}
Run Code Online (Sandbox Code Playgroud) python ×10
pandas ×5
python-3.x ×2
scikit-learn ×2
any ×1
dataframe ×1
grid-search ×1
if-statement ×1
jupyter ×1
numpy ×1
r ×1
yelp ×1