I just built my first random forest classifier today and I am trying to improve its performance. I was reading about how cross-validation is important to avoid overfitting of data and hence obtain better results. I implemented StratifiedKFold using sklearn, however, surprisingly this approach resulted to be less accurate. I have read numerous posts suggesting that cross-validating is much more efficient than train_test_split.
Estimator:
rf = RandomForestClassifier(n_estimators=100, random_state=42)
Run Code Online (Sandbox Code Playgroud)
K-Fold:
ss = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)
for train_index, test_index in …Run Code Online (Sandbox Code Playgroud) 嗨,我有dataframe多个包含相同ID的行。列之一是日期(升序)。我想计算第一个条目和最后一个条目之间的日期差。
我通过实例化pandas构造函数来做到这一点,如下所示:
g = df.groupby('ID')
print(pd.DataFrame({'first':g.Date.nth(0), 'last':g.Date.nth(-1)}))
Run Code Online (Sandbox Code Playgroud)
第一个值正确,但是最后一个值远不正确。
例如,对于特定ID,first dateis 2000-05-08和last dateis是8/21/2010。输出结果为:
first last
ID
31965.0 2000-05-08 2002-12-29
Run Code Online (Sandbox Code Playgroud)
2002-12-29 在中间的某个地方。
样本数据:
ID Date
31965 5/8/2000
31965 5/10/2000
31965 5/18/2000
31965 5/22/2000
31965 5/23/2000
31965 5/25/2000
31965 5/30/2000
31965 6/7/2000
31965 6/8/2000
31965 6/11/2000
31965 6/13/2000
.....
31965 4/11/2009
31965 5/9/2009
31965 5/16/2009
31965 5/23/2009
31965 2/5/2010
31965 2/26/2010
31965 3/13/2010
31965 4/10/2010
31965 8/21/2010
Run Code Online (Sandbox Code Playgroud)
我希望ID 31965的结果为:5/8/2000和8/21/2010,以便最终确定日期差。
因此,让我们考虑存在以下代码段的情况:
if(x == 0)
{
for(var i = 0; i < 5; ++ i)
{
//do something
}
}
else
{
for(var i = 0; i < 5; ++ i)
{
//do something different
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这两个条件都遍历相同的 for 循环,但会根据条件执行不同的操作。我的问题是,有这样的事情是不是不好的做法:
for(var i = 0; i < 5; ++ i)
{
if(x == 0){
// do something
}else{
// do something else
}
}
Run Code Online (Sandbox Code Playgroud)
原因是我认为这可能是一个不好的做法是因为对于循环的每个实例,都会针对第一个片段执行条件检查,首先检查条件然后执行循环. 我错了吗?
所有printf语句都出错,说明:
格式字符串不使用数据争论.
我在互联网上环顾四周,发现了一些相关的事情,但是我并没有完全理解这个解决方案,希望也许有人可以进一步解释.
void displayPuzzle()
{
int i, j;
char x = 'A';
for (i = 0; i < COLOUMNS; i ++)
{
printf("%c ", x); //error here
x++;
}
printf("\n\n");
for (i = 0; i < ROWS; i ++)
{
printf("%d\t", i); //error here
for (j = 0; j < COLOUMNS; j ++)
{
printf("%c ", puzzle[i][j]); //error here
}
printf("\n\n");
}
}
Run Code Online (Sandbox Code Playgroud) python ×2
c ×1
dataframe ×1
date ×1
if-statement ×1
loops ×1
pandas ×1
performance ×1
printf ×1
scikit-learn ×1
string ×1