我正在尝试使用 , 来最小化 Python 中的函数scipy.optimize.minimize,以确定四个不同的参数。
我想在优化算法的每一步打印当前评估的参数,这样我就可以使用它们来使我的初始猜测更好。
我怎样才能做到这一点?
我有一个非常大的CSV文件(几十牡蛎)含有网络日志有以下的列:user_id,time_stamp,category_clicked。我必须建立一个评分器来确定用户喜欢和不喜欢的类别。请注意,我有超过 1000 万用户。
我第一次把它切成块,并把它们存储在一个HDFStore名为input.h5然后我用groupby在user_id以下杰夫的方式。
这是我的数据:大约 2 亿行,1000 万个唯一 user_id。
user id | timestamp | category_clicked
20140512081646222000004-927168801|20140722|7
20140512081714121000004-383009763|20140727|4
201405011348508050000041009490586|20140728|1
20140512081646222000004-927168801|20140724|1
20140501135024818000004-1623130763|20140728|3
Run Code Online (Sandbox Code Playgroud)
这是我的 pandas.show_version():
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.6.final.0
python-bits: 64
OS: Windows
OS-release: 8
machine: AMD64
processor: AMD64 Family 21 Model 2 Stepping 0, AuthenticAMD
byteorder: little
LC_ALL: None
LANG: fr_FR
pandas: 0.13.1
Cython: 0.20.1
numpy: 1.8.1
scipy: 0.13.3
statsmodels: 0.5.0
IPython: 2.0.0 …Run Code Online (Sandbox Code Playgroud) 我有一个我想要最小化的功能scipy.optimize.fmin.请注意,我print在评估函数时强制执行.
我的问题是,当我开始最小化时,打印的值会减小,直到达到某个点(值46700222.800).在那里它继续减少非常小的比例,例如,46700222.797,46700222.765,46700222.745,46700222.699,46700222.688,46700222.678因此直观地说,我觉得我已经达到了最小值,因为每一步的长度都减去了1.但算法一直在运行直到我得到一个" Maximum number of function evaluations has been exceeded"错误.
我的问题是:当函数求值达到一个不再真正进化的值时,我怎么能强制我的算法接受参数的值(比方说,迭代后我的收益不超过1).我读过ftol可以使用这些选项,但它对我的代码完全没有影响.事实上,我甚至不知道要付出什么价值ftol.我尝试了从0.00001到10000的所有内容,但仍然没有收敛.
我问自己关于sklearn中的fit方法的各种问题。
问题1:当我这样做时:
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD()
svd_1 = model.fit(X1)
svd_2 = model.fit(X2)
Run Code Online (Sandbox Code Playgroud)
在此过程中,变量模型的内容是否发生任何变化?
问题2:当我这样做时:
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD()
svd_1 = model.fit(X1)
svd_2 = svd_1.fit(X2)
Run Code Online (Sandbox Code Playgroud)
svd_1怎么了?换句话说,svd_1已经安装好了,我又重新安装了它,那么它的组件正在发生什么?
我有以下内容pandas.DataFrame:
val1 val2 val3 val4
1 7 8 3 2
2 1 4 5 4
3 5 7 5 3
4 7 8 3 2
5 6 8 1 0
6 0 2 5 7
7 1 4 5 4
8 7 8 3 2
Run Code Online (Sandbox Code Playgroud)
我想计算我的DataFrame中每个元组的数量.预期结果(或多或少):
count tuple
3 (7, 8, 3, 2)
2 (1, 4, 5, 4)
1 (5, 7, 5, 3)
1 (6, 8, 1, 0)
1 (0, 2, 5, 7)
Run Code Online (Sandbox Code Playgroud)
另请注意,我的真实DataFrame 有数百万个条目,所以我确实需要一些时间优化的解决方案.
直到现在,我的方法是用字符串列转换每个列Series.astype(str) …
我正在使用 google.bigquery.python api,以便每天自动将数据集从 GCS 存储桶加载到 Bigquery。我为这个数据集指定了一个模式,它一直有效,直到有一天我遇到了这个错误:
ERROR - {u'state': u'DONE', u'errors': [{u'reason': u'invalid', u'message': u'Invalid argument: xxxxxxxxxxx@gmail.com', u'location': u'File: 0 / Line:1283011 / Field:44'},
{u'reason': u'invalid', u'message': u'Invalid argument: xxxxxxxxxxx@gmail.com', u'location': u'File: 0 / Line:1338016 / Field:44'}, {u'reason': u'invalid', u'message': u'Too many errors encountered. Limit is: 0.'}], u'errorResult': {u'reason': u'invalid', u'message': u'Too many errors encountered. Limit is: 0.'}}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何告诉 bigquery 自动删除不符合架构的行?
我有一个大的DataFrame df,我想计算每个值.我做不到:
df = pandas.read_csv('my_big_data.csv')
values_df = df.apply(value_counts)
Run Code Online (Sandbox Code Playgroud)
因为它是一个非常大的数据库.
我认为必须有可能通过块来做大块chunksize,但我看不出如何.
python ×7
pandas ×3
bigdata ×2
scipy ×2
count ×1
csv ×1
minimization ×1
model ×1
optimization ×1
parameters ×1
scikit-learn ×1
tuples ×1