2222
2323namespace ffm {
2424
25+ size_t get_column_index (graphlab::gl_sframe sf, std::string colname) {
26+ const auto colnames = sf.column_names ();
27+ for (size_t i = 0 ; i < colnames.size (); ++i) {
28+ if (colnames[i] == colname) {
29+ return i;
30+ }
31+ }
32+ return -1 ;
33+ }
34+
35+
2536namespace {
2637
2738using namespace std ;
2839using namespace graphlab ;
2940
41+
3042ffm_int const kALIGNByte = 16 ;
3143ffm_int const kALIGN = kALIGNByte /sizeof (ffm_float);
3244
@@ -229,11 +241,18 @@ shared_ptr<ffm_model> train(
229241 }
230242
231243 size_t target_col_idx = get_column_index (tr->sf , tr->target_column );
244+ // logprogress_stream << tr->target_column << " " << get_column_index(tr->sf, tr->target_column) << std::endl;
245+ // logprogress_stream << flex_type_enum_to_name(tr->sf.select_column(tr->target_column).dtype()) << std::endl;
246+
232247 std::vector<size_t > feature_col_idxs;
233248 for (auto col : tr->feature_columns ) {
249+ // logprogress_stream << col << " " << get_column_index(tr->sf, col) << std::endl;
250+ // logprogress_stream << flex_type_enum_to_name(tr->sf.select_column(col).dtype()) << std::endl;
251+
234252 feature_col_idxs.push_back (get_column_index (tr->sf , col));
235253 }
236254
255+
237256 for (ffm_int iter = 0 ; iter < param.nr_iters ; iter++)
238257 {
239258 ffm_double tr_loss = 0 ;
@@ -246,8 +265,18 @@ shared_ptr<ffm_model> train(
246265 for (; it != rsf.end (); ++it, ++i) {
247266
248267 row_nodes.clear ();
249- const std::vector<flexible_type>& row = *it;
268+ std::vector<flexible_type> row = *it;
250269 const auto & yval = row[target_col_idx];
270+
271+ if (row[target_col_idx].get_type () != flex_type_enum::INTEGER) {
272+ log_and_throw (" Response must be integer type." );
273+ }
274+
275+ if (row[target_col_idx].get_type () != flex_type_enum::INTEGER) {
276+ logprogress_stream << " Column " << target_col_idx << std::endl;
277+ logprogress_stream << flex_type_enum_to_name (row[target_col_idx].get_type ()) << std::endl;
278+ log_and_throw (" Response must be integer type." );
279+ }
251280 ffm_float y = (yval.get <flex_int>() > 0 ) ? 1 .0f : -1 .0f ;
252281
253282 for (size_t col : feature_col_idxs) {
0 commit comments