我在python中有一个数据帧,其中包含用于二进制分类的所有数据。我在两次迭代中摄取数据 - 一次是所有数据,然后是另一个类的所有数据。然后我运行行的随机化。 我遇到的问题是,每次重新运行脚本时,数据帧都会重新创建并随机化,从而产生不可重现的结果。
我应该从外部文件运行数据帧创建和随机化吗?在模型构建中是否存在关于数据摄取的常见做法?
在这方面我没有尝试任何尝试。我还想知道从统计学角度或普通实践中做到这一点是否有意义? 我会尝试这样的事情:
import data_ingest
data_ingest.function_data_call()
但是每次我运行脚本时它都会调用外部脚本来形成数据并随机化它。所以这不是我要找的解决方案。
我无法真正展示一个例子,我正在加载文档(文本文件) - 文档二进制分类。数据帧的结构如下:
row| content | class
--------------------------------------
1 | the sky is blue | 0
2 | the river runs deep purple| 0
3 | yellow fever | 0
4 | red strawberries | 1
5 | black orchids are nice | 1
摄取代码:
for f in [f for f in os.listdir(path1) if not f.startswith('.')]:
with io.open(path1+f, "r", encoding="utf-8") as myfile:
# data1.append(myfile.read().rstrip().replace('-', '').replace('.', '').replace('\n', ''))
tmp1 = myfile.read().rstrip().replace('-', '').replace('\n', '')
data1.append(" ".join(tmp1.split()))
df1 = pd.DataFrame(data1, columns=["content"])
df1["class"] = "1"
for f in [f for f in os.listdir(path1) if not f.startswith('.')]:
with io.open(path1+f, "r", encoding="utf-8") as myfile:
# data1.append(myfile.read().rstrip().replace('-', '').replace('.', '').replace('\n', ''))
tmp1 = myfile.read().rstrip().replace('-', '').replace('\n', '')
data1.append(" ".join(tmp1.split()))
df1 = pd.DataFrame(data1, columns=["content"])
df1["class"] = "1"
for f in [f for f in os.listdir(path2) if not f.startswith('.')]:
with io.open(path2+f, "r", encoding="utf-8") as myfile:
# data2.append(myfile.read().rstrip().replace('-', '').replace('.', '').replace('\n', '').replace(' ', ''))
tmp2 = myfile.read().rstrip().replace('-', '').replace('\n', '')
data2.append(" ".join(tmp2.split()))
df2 = pd.DataFrame(data2, columns=["content"])
df2["class"] = "0"
### Concatenate the two DataFrame into One and Re-Index
emails = pd.concat([df1,df2], ignore_index=True)
## Randomize Rows
emails = emails.reindex(np.random.permutation(emails.index))
答案 0 :(得分:1)
如果要在(伪)随机化后重现相同的结果,可以set the random seed。每次使用相同的种子时,都会得到相同的随机数序列。
其次,您可以将中间结果保存到文件,JSON或pickle。您可以检查它是否已经存在,如果不存在,则重新创建它。