我正在尝试将评分数据(包含用户ID,项目,评分,review_time)拆分为训练/测试集,以使每个用户80%的评论进入训练集,而其余20%测试集。如何为每个用户拆分数据?
我正在Python 3.7中运行代码。最初,我尝试将sklearn模块中的stratify参数与train_test_split()结合使用,但是会出现以下错误“ y中人口最少的类只有1个成员,这太少了。任何类的最小组数不能少于比2.”。此外,我尝试从另一个类似的反馈中使用等级/计数> 0.8技巧,但是在我的情况下,它没有做应做的事情。
$app_id = SOCIALS_LOGIN_FB_APP_ID;
$app_secret = SOCIALS_LOGIN_FB_APP_SECRET;
$siteurl = current(explode('?zenid', htmlspecialchars_decode(zen_href_link('socials_login', 'id=facebook'))));
$facebook = new Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => 'v3.2',
]);
$helper = $facebook->getRedirectLoginHelper();
try {
// check access token
//$accessToken = $helper->getAccessToken($siteurl);
$accessToken = $helper->getAccessToken();
//echo '<pre>'; var_dump($siteurl); echo '</pre>';die;
if(empty($accessToken)) {
// redirect to facebook and get access token
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl($siteurl, $permissions);
echo '<script type="text/javascript">top.location.href = "' . $loginUrl . '"</script>';
exit();
} else {
$response = $facebook->get('/me?fields=id,name,email', $accessToken);
$user = $response->getGraphUser();
//echo '<pre>'; var_dump($user);echo '</pre>';die;
$email_address = $user['email'];
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$redirect_to_login = true;
break;
我希望代码会以这样的方式泄漏数据:只有1条评论的用户才能进入火车训练集,但是拥有3条评论(3 * 0.8 = 2.4)的评论者的2条评论就会进入火车训练测试集中有一个复习题。目的是使所有用户(如果可能)都处于训练和测试集中。