我正在用Keras构建一个多类模型.
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[checkpoint], validation_data=(X_test, y_test)) # starts training
Run Code Online (Sandbox Code Playgroud)
以下是我的测试数据的样子(它是文本数据).
X_test
Out[25]:
array([[621, 139, 549, ..., 0, 0, 0],
[621, 139, 543, ..., 0, 0, 0]])
y_test
Out[26]:
array([[0, 0, 1],
[0, 1, 0]])
Run Code Online (Sandbox Code Playgroud)
生成预测后......
predictions = model.predict(X_test)
predictions
Out[27]:
array([[ 0.29071924, 0.2483743 , 0.46090645],
[ 0.29566404, 0.45295066, 0.25138539]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
我做了以下以获得混淆矩阵.
y_pred = (predictions > 0.5)
confusion_matrix(y_test, y_pred)
Traceback (most recent call last):
File "<ipython-input-38-430e012b2078>", line 1, in <module>
confusion_matrix(y_test, y_pred)
File "/Users/abrahammathew/anaconda3/lib/python3.6/site-packages/sklearn/metrics/classification.py", line …Run Code Online (Sandbox Code Playgroud) 假设我有一个随机名称的字符向量.我还有另一个带有许多汽车制造的角色向量,我想要删除原始向量中发生的任何汽车事件.
所以给出了矢量:
dat = c("Tonyhonda","DaveFord","Alextoyota")
car = c("Honda","Ford","Toyota","honda","ford","toyota")
Run Code Online (Sandbox Code Playgroud)
我想最终得到如下内容:
dat = c("Tony","Dave","Alex")
Run Code Online (Sandbox Code Playgroud)
如何删除R中的部分字符串?
我正在尝试使用PyTrendsGithub上提供的模块(这里).要使用此脚本,我需要安装fake-useragent模块:
pip install fake-useragent
Run Code Online (Sandbox Code Playgroud)
但是,每次我导入文件并尝试在控制台中执行命令时,我都会收到以下错误:
>>> from pytrends2.pyGTrends import pyGTrends
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pytrends2.py", line 18, in <module>
from fake_useragent import UserAgent
ImportError: No module named fake_useragent
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的东西,没有运气.尝试确保安装依赖项模块时:
pip install pyyaml ua-parser user-agents
Run Code Online (Sandbox Code Playgroud)
......我得到以下内容:
abraham@abraham-Inspiron-3521:~$ sudo pip install pyyaml user-agents
Downloading/unpacking pyyaml
Downloading PyYAML-3.11.tar.gz (248kB): 248kB downloaded
Running setup.py (path:/tmp/pip_build_root/pyyaml/setup.py) egg_info for package pyyaml
Downloading/unpacking user-agents
Downloading user_agents-1.0.1-py2-none-any.whl
Downloading/unpacking ua-parser (from user-agents)
Downloading ua_parser-0.5.0-py2-none-any.whl (66kB): 66kB downloaded …Run Code Online (Sandbox Code Playgroud) 我在熊猫数据框中有一个 int64 对象,它应该代表一个日期。
>>> df.dtypes
CreatedDate int64
Run Code Online (Sandbox Code Playgroud)
显然,我想将其转换为日期时间,因此我执行了以下操作
df["CreatedDate2"] = pd.to_datetime(pd.Series(df["CreatedDate"]))
>>> df[["CreatedDate","CreatedDate2"]].head()
CreatedDate CreatedDate2
0 1466461661000 1970-01-01 00:24:26.461661
1 1464210703000 1970-01-01 00:24:24.210703
2 1423576093000 1970-01-01 00:23:43.576093
3 1423611903000 1970-01-01 00:23:43.611903
4 1423617600000 1970-01-01 00:23:43.617600
>>>
Run Code Online (Sandbox Code Playgroud)
然而,这产生了 1970 年代的日期,这不应该是真的。谁能告诉我如何在 Pandas 数据框中将 int64 转换为日期时间。我认为这是正确的方法。
我有一个如下所示的 .dat 文件。
ID_1,5.0,5.0,5.0,...
ID_2,5.0,5.0,5.0,...
Run Code Online (Sandbox Code Playgroud)
我正在尝试将数据作为数组导入到 Python 中。
如果我这样做,它会给我一个元组列表。
data = np.genfromtxt('mydat.dat',
dtype=None,
delimiter=',')
Run Code Online (Sandbox Code Playgroud)
然而,当我执行以下操作时,它给出了一个奇怪的结果,可能是因为第一个元素不是浮点数。
np.fromfile('mydat.dat', dtype=float)
array([ 3.45301146e-086, 3.45300781e-086, 3.25195588e-086, ...,
8.04331780e-096, 8.04331780e-096, 1.31544776e-259])
Run Code Online (Sandbox Code Playgroud)
对此有何建议?这是将 .dat 文件作为数组导入 Python 的两种主要方法,但它们似乎没有提供所需的结果。
让我们看下面的data.table。它有日期和一列数字。我想获取每个日期的周数,然后对每两周进行汇总(总和)。
Date <- as.Date(c("1980-01-01", "1980-01-02", "1981-01-05", "1981-01-05", "1982-01-08", "1982-01-15", "1980-01-16", "1980-01-17",
"1981-01-18", "1981-01-22", "1982-01-24", "1982-01-26"))
Runoff <- c(2, 1, 0.1, 3, 2, 5, 1.5, 0.5, 0.3, 2, 1.5, 4)
DT <- data.table(Date, Runoff)
DT
Run Code Online (Sandbox Code Playgroud)
所以从日期开始,我可以很容易地得到年份和星期。
DT[,c("Date_YrWeek") := paste(substr(Date,1,4), week(Date), sep="-")][]
Run Code Online (Sandbox Code Playgroud)
我正在努力解决的是每两周汇总一次。我想我会得到每周的第一个日期并使用这些值进行过滤。不幸的是,那是非常愚蠢的。
DT[,.(min(Date)),by=.(Date_YrWeek)][order(Date)]
Run Code Online (Sandbox Code Playgroud)
最终结果将是每两周的总和。
weeks sum_value
1 and 2 ...
3 and 4 ...
5 and 6 ...
Run Code Online (Sandbox Code Playgroud)
有人有一种有效的方法来使用 data.table 做到这一点吗?
我有以下日期,它采用'月 - 年'格式.但是,要在ggplot2图形的x轴上绘制日期,我正在尝试将它们转换为日期格式.使用as.Date函数,它会生成NA值,因为没有提供"day"值.因此,除了使用paste()函数将日期粘贴到每个日期之外,我如何处理调整日期以便我可以绘制它们.
date = c("Jan-10","Feb-10","Mar-10","Jun-10","Jul-10")
date
date = as.Date(date, "%m/%d/%Y") # doesn't work
date = as.Date(as.yearmon(date, format="%y-%b")) # doesn't work
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一些数据,我正在尝试教自己在回归模型中利用滞后预测器.我目前正在尝试从广义加法模型生成预测,该模型使用样条线来平滑数据并包含滞后.
假设我有以下数据并将数据拆分为训练和测试样本.
head(mtcars)
Train <- sample(1:nrow(mtcars), ceiling(nrow(mtcars)*3/4), replace=FALSE)
Run Code Online (Sandbox Code Playgroud)
太棒了,让我们在训练集上训练gam模型.
f_gam <- gam(hp ~ s(qsec, bs="cr") + s(lag(disp, 1), bs="cr"), data=mtcars[Train,])
summary(f_gam)
Run Code Online (Sandbox Code Playgroud)
当我对保留样本进行预测时,我收到一条错误消息.
f_gam.pred <- predict(f_gam, mtcars[-Train,]); f_gam.pred
Error in ExtractData(object, data, NULL) :
'names' attribute [1] must be the same length as the vector [0]
Calls: predict ... predict.gam -> PredictMat -> Predict.matrix3 -> ExtractData
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助诊断问题并帮助解决问题.我得到lag(__,1)的数据点为NA,这可能是长度不同的原因.但是,我没有解决问题的办法.
假设我有一个包含日期、纬度和经度的数据集。
dt = data.table(date = c("2017-10-24 05:01:05",
"2017-10-24 05:01:57",
"2017-10-24 05:02:54"),
lat = c(-6.2704925537109375,
-6.2704925537109375,
-6.2704925537109375),
long = c(106.5803680419922,
106.5803680419922,
106.5803680419922))
Run Code Online (Sandbox Code Playgroud)
时间是UTC。是否可以使用纬度和经度将该 UTC 传输到本地时间?
假设我有以下数据.
df = pd.DataFrame({'group':list('aaaabbbb'),
'val':[1,3,3,np.NaN,5,6,6,2],
'id':[1,np.NaN,np.NaN,np.NaN,np.NaN,3,np.NaN,3]})
df
Run Code Online (Sandbox Code Playgroud)
我想删除NaN值百分比超过50%的列.我可以通过运行以下操作然后使用drop手动完成.
df.isnull().sum()/len(df)*100
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一个优雅和快速的代码来做到这一点?
假设我有一个包含以下数据的数据框(df):
df = data.frame(name=c("David","Mark","Alice"),
income=c("5,000","10,00","$50.55"),
state=c("KS?","FL","CA;"))
Run Code Online (Sandbox Code Playgroud)
我想集体删除此数据框中的所有标点符号.当然,我可以将每列作为单独的向量并在其上运行gsub命令(见下文),但我想删除整个数据框中的所有标点符号.
gsub("[?.;!¡¿·']", "", df$state)
Run Code Online (Sandbox Code Playgroud)
有没有办法在R中指定它而不编写for循环或使用apply函数将函数应用于每个数据框列?
我有一个长度不等的数据表列表。一些数据表有 35 列,其他数据表有 36 列。
我有这行代码,但它会产生错误
> lst <- unlist(full_data.lst, recursive = FALSE)
> model_dat <- do.call("rbind", lst)
Error in rbindlist(l, use.names, fill, idcol) :
Item 1362 has 35 columns, inconsistent with item 1 which has 36 columns. If instead you need to fill missing columns, use set argument 'fill' to TRUE.
Run Code Online (Sandbox Code Playgroud)
关于如何修改它以使其正常工作的任何建议。