Xgboost: рдлреАрдЪрд░_рдирд╛рдо рдмреЗрдореЗрд▓ рдкрд╛рдпрдерди рдореЗрдВ рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп

рдХреЛ рдирд┐рд░реНрдорд┐рдд 31 рдордИ 2016  ┬╖  51рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dmlc/xgboost

рдореБрдЭреЗ ValueError рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ: рдлреАрдЪрд░_рдирд╛рдо рдмреЗрдореЗрд▓ рдЕрдЬрдЧрд░ рдореЗрдВ рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд╕рд╛рде xgboost рдХрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рджреЗрддреЗ рд╕рдордпред
xgboost рд╕рдВрд╕реНрдХрд░рдг git рд╕реЗ рдирд╡реАрдирддрдо рд╣реИред рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рд╕рдордп рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИред

рдХреЛрдб

from scipy import sparse
import xgboost as xgb
from random import *
randBinList = lambda n: [randint(0,1) for b in range(1,n+1)]

train = sparse.rand(100,500)
test = sparse.rand(10, 500)
y = randBinList(100)
clf = xgb.XGBClassifier()
clf.fit(train,y)
preds = clf.predict_proba(test)

рдкреВрд░реНрдг рдЯреНрд░реЗрд╕рдмреИрдХ:

ValueError                                Traceback (most recent call last)
<ipython-input-15-e03f10289bf1> in <module>()
----> 1 preds = clf.predict_proba(test)

/usr/local/lib/python2.7/dist-packages/xgboost-0.4-py2.7.egg/xgboost/sklearn.pyc in predict_proba(self, data, output_margin, ntree_limit)
    471         class_probs = self.booster().predict(test_dmatrix,
    472                                              output_margin=output_margin,
--> 473                                              ntree_limit=ntree_limit)
    474         if self.objective == "multi:softprob":
    475             return class_probs

/usr/local/lib/python2.7/dist-packages/xgboost-0.4-py2.7.egg/xgboost/core.pyc in predict(self, data, output_margin, ntree_limit, pred_leaf)
    937             option_mask |= 0x02
    938 
--> 939         self._validate_features(data)
    940 
    941         length = ctypes.c_ulong()

/usr/local/lib/python2.7/dist-packages/xgboost-0.4-py2.7.egg/xgboost/core.pyc in _validate_features(self, data)
   1177 
   1178                 raise ValueError(msg.format(self.feature_names,
-> 1179                                             data.feature_names))
   1180 
   1181     def get_split_value_histogram(self, feature, fmap='', bins=None, as_pandas=True):

ValueError: feature_names mismatch: ['f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f20', 'f21', 'f22', 'f23', 'f24', 'f25', 'f26', 'f27', 'f28', 'f29', 'f30', 'f31', 'f32', 'f33', 'f34', 'f35', 'f36', 'f37', 'f38', 'f39', 'f40', 'f41', 'f42', 'f43', 'f44', 'f45', 'f46', 'f47', 'f48', 'f49', 'f50', 'f51', 'f52', 'f53', 'f54', 'f55', 'f56', 'f57', 'f58', 'f59', 'f60', 'f61', 'f62', 'f63', 'f64', 'f65', 'f66', 'f67', 'f68', 'f69', 'f70', 'f71', 'f72', 'f73', 'f74', 'f75', 'f76', 'f77', 'f78', 'f79', 'f80', 'f81', 'f82', 'f83', 'f84', 'f85', 'f86', 'f87', 'f88', 'f89', 'f90', 'f91', 'f92', 'f93', 'f94', 'f95', 'f96', 'f97', 'f98', 'f99', 'f100', 'f101', 'f102', 'f103', 'f104', 'f105', 'f106', 'f107', 'f108', 'f109', 'f110', 'f111', 'f112', 'f113', 'f114', 'f115', 'f116', 'f117', 'f118', 'f119', 'f120', 'f121', 'f122', 'f123', 'f124', 'f125', 'f126', 'f127', 'f128', 'f129', 'f130', 'f131', 'f132', 'f133', 'f134', 'f135', 'f136', 'f137', 'f138', 'f139', 'f140', 'f141', 'f142', 'f143', 'f144', 'f145', 'f146', 'f147', 'f148', 'f149', 'f150', 'f151', 'f152', 'f153', 'f154', 'f155', 'f156', 'f157', 'f158', 'f159', 'f160', 'f161', 'f162', 'f163', 'f164', 'f165', 'f166', 'f167', 'f168', 'f169', 'f170', 'f171', 'f172', 'f173', 'f174', 'f175', 'f176', 'f177', 'f178', 'f179', 'f180', 'f181', 'f182', 'f183', 'f184', 'f185', 'f186', 'f187', 'f188', 'f189', 'f190', 'f191', 'f192', 'f193', 'f194', 'f195', 'f196', 'f197', 'f198', 'f199', 'f200', 'f201', 'f202', 'f203', 'f204', 'f205', 'f206', 'f207', 'f208', 'f209', 'f210', 'f211', 'f212', 'f213', 'f214', 'f215', 'f216', 'f217', 'f218', 'f219', 'f220', 'f221', 'f222', 'f223', 'f224', 'f225', 'f226', 'f227', 'f228', 'f229', 'f230', 'f231', 'f232', 'f233', 'f234', 'f235', 'f236', 'f237', 'f238', 'f239', 'f240', 'f241', 'f242', 'f243', 'f244', 'f245', 'f246', 'f247', 'f248', 'f249', 'f250', 'f251', 'f252', 'f253', 'f254', 'f255', 'f256', 'f257', 'f258', 'f259', 'f260', 'f261', 'f262', 'f263', 'f264', 'f265', 'f266', 'f267', 'f268', 'f269', 'f270', 'f271', 'f272', 'f273', 'f274', 'f275', 'f276', 'f277', 'f278', 'f279', 'f280', 'f281', 'f282', 'f283', 'f284', 'f285', 'f286', 'f287', 'f288', 'f289', 'f290', 'f291', 'f292', 'f293', 'f294', 'f295', 'f296', 'f297', 'f298', 'f299', 'f300', 'f301', 'f302', 'f303', 'f304', 'f305', 'f306', 'f307', 'f308', 'f309', 'f310', 'f311', 'f312', 'f313', 'f314', 'f315', 'f316', 'f317', 'f318', 'f319', 'f320', 'f321', 'f322', 'f323', 'f324', 'f325', 'f326', 'f327', 'f328', 'f329', 'f330', 'f331', 'f332', 'f333', 'f334', 'f335', 'f336', 'f337', 'f338', 'f339', 'f340', 'f341', 'f342', 'f343', 'f344', 'f345', 'f346', 'f347', 'f348', 'f349', 'f350', 'f351', 'f352', 'f353', 'f354', 'f355', 'f356', 'f357', 'f358', 'f359', 'f360', 'f361', 'f362', 'f363', 'f364', 'f365', 'f366', 'f367', 'f368', 'f369', 'f370', 'f371', 'f372', 'f373', 'f374', 'f375', 'f376', 'f377', 'f378', 'f379', 'f380', 'f381', 'f382', 'f383', 'f384', 'f385', 'f386', 'f387', 'f388', 'f389', 'f390', 'f391', 'f392', 'f393', 'f394', 'f395', 'f396', 'f397', 'f398', 'f399', 'f400', 'f401', 'f402', 'f403', 'f404', 'f405', 'f406', 'f407', 'f408', 'f409', 'f410', 'f411', 'f412', 'f413', 'f414', 'f415', 'f416', 'f417', 'f418', 'f419', 'f420', 'f421', 'f422', 'f423', 'f424', 'f425', 'f426', 'f427', 'f428', 'f429', 'f430', 'f431', 'f432', 'f433', 'f434', 'f435', 'f436', 'f437', 'f438', 'f439', 'f440', 'f441', 'f442', 'f443', 'f444', 'f445', 'f446', 'f447', 'f448', 'f449', 'f450', 'f451', 'f452', 'f453', 'f454', 'f455', 'f456', 'f457', 'f458', 'f459', 'f460', 'f461', 'f462', 'f463', 'f464', 'f465', 'f466', 'f467', 'f468', 'f469', 'f470', 'f471', 'f472', 'f473', 'f474', 'f475', 'f476', 'f477', 'f478', 'f479', 'f480', 'f481', 'f482', 'f483', 'f484', 'f485', 'f486', 'f487', 'f488', 'f489', 'f490', 'f491', 'f492', 'f493', 'f494', 'f495', 'f496', 'f497', 'f498'] ['f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f20', 'f21', 'f22', 'f23', 'f24', 'f25', 'f26', 'f27', 'f28', 'f29', 'f30', 'f31', 'f32', 'f33', 'f34', 'f35', 'f36', 'f37', 'f38', 'f39', 'f40', 'f41', 'f42', 'f43', 'f44', 'f45', 'f46', 'f47', 'f48', 'f49', 'f50', 'f51', 'f52', 'f53', 'f54', 'f55', 'f56', 'f57', 'f58', 'f59', 'f60', 'f61', 'f62', 'f63', 'f64', 'f65', 'f66', 'f67', 'f68', 'f69', 'f70', 'f71', 'f72', 'f73', 'f74', 'f75', 'f76', 'f77', 'f78', 'f79', 'f80', 'f81', 'f82', 'f83', 'f84', 'f85', 'f86', 'f87', 'f88', 'f89', 'f90', 'f91', 'f92', 'f93', 'f94', 'f95', 'f96', 'f97', 'f98', 'f99', 'f100', 'f101', 'f102', 'f103', 'f104', 'f105', 'f106', 'f107', 'f108', 'f109', 'f110', 'f111', 'f112', 'f113', 'f114', 'f115', 'f116', 'f117', 'f118', 'f119', 'f120', 'f121', 'f122', 'f123', 'f124', 'f125', 'f126', 'f127', 'f128', 'f129', 'f130', 'f131', 'f132', 'f133', 'f134', 'f135', 'f136', 'f137', 'f138', 'f139', 'f140', 'f141', 'f142', 'f143', 'f144', 'f145', 'f146', 'f147', 'f148', 'f149', 'f150', 'f151', 'f152', 'f153', 'f154', 'f155', 'f156', 'f157', 'f158', 'f159', 'f160', 'f161', 'f162', 'f163', 'f164', 'f165', 'f166', 'f167', 'f168', 'f169', 'f170', 'f171', 'f172', 'f173', 'f174', 'f175', 'f176', 'f177', 'f178', 'f179', 'f180', 'f181', 'f182', 'f183', 'f184', 'f185', 'f186', 'f187', 'f188', 'f189', 'f190', 'f191', 'f192', 'f193', 'f194', 'f195', 'f196', 'f197', 'f198', 'f199', 'f200', 'f201', 'f202', 'f203', 'f204', 'f205', 'f206', 'f207', 'f208', 'f209', 'f210', 'f211', 'f212', 'f213', 'f214', 'f215', 'f216', 'f217', 'f218', 'f219', 'f220', 'f221', 'f222', 'f223', 'f224', 'f225', 'f226', 'f227', 'f228', 'f229', 'f230', 'f231', 'f232', 'f233', 'f234', 'f235', 'f236', 'f237', 'f238', 'f239', 'f240', 'f241', 'f242', 'f243', 'f244', 'f245', 'f246', 'f247', 'f248', 'f249', 'f250', 'f251', 'f252', 'f253', 'f254', 'f255', 'f256', 'f257', 'f258', 'f259', 'f260', 'f261', 'f262', 'f263', 'f264', 'f265', 'f266', 'f267', 'f268', 'f269', 'f270', 'f271', 'f272', 'f273', 'f274', 'f275', 'f276', 'f277', 'f278', 'f279', 'f280', 'f281', 'f282', 'f283', 'f284', 'f285', 'f286', 'f287', 'f288', 'f289', 'f290', 'f291', 'f292', 'f293', 'f294', 'f295', 'f296', 'f297', 'f298', 'f299', 'f300', 'f301', 'f302', 'f303', 'f304', 'f305', 'f306', 'f307', 'f308', 'f309', 'f310', 'f311', 'f312', 'f313', 'f314', 'f315', 'f316', 'f317', 'f318', 'f319', 'f320', 'f321', 'f322', 'f323', 'f324', 'f325', 'f326', 'f327', 'f328', 'f329', 'f330', 'f331', 'f332', 'f333', 'f334', 'f335', 'f336', 'f337', 'f338', 'f339', 'f340', 'f341', 'f342', 'f343', 'f344', 'f345', 'f346', 'f347', 'f348', 'f349', 'f350', 'f351', 'f352', 'f353', 'f354', 'f355', 'f356', 'f357', 'f358', 'f359', 'f360', 'f361', 'f362', 'f363', 'f364', 'f365', 'f366', 'f367', 'f368', 'f369', 'f370', 'f371', 'f372', 'f373', 'f374', 'f375', 'f376', 'f377', 'f378', 'f379', 'f380', 'f381', 'f382', 'f383', 'f384', 'f385', 'f386', 'f387', 'f388', 'f389', 'f390', 'f391', 'f392', 'f393', 'f394', 'f395', 'f396', 'f397', 'f398', 'f399', 'f400', 'f401', 'f402', 'f403', 'f404', 'f405', 'f406', 'f407', 'f408', 'f409', 'f410', 'f411', 'f412', 'f413', 'f414', 'f415', 'f416', 'f417', 'f418', 'f419', 'f420', 'f421', 'f422', 'f423', 'f424', 'f425', 'f426', 'f427', 'f428', 'f429', 'f430', 'f431', 'f432', 'f433', 'f434', 'f435', 'f436', 'f437', 'f438', 'f439', 'f440', 'f441', 'f442', 'f443', 'f444', 'f445', 'f446', 'f447', 'f448', 'f449', 'f450', 'f451', 'f452', 'f453', 'f454', 'f455', 'f456', 'f457', 'f458', 'f459', 'f460', 'f461', 'f462', 'f463', 'f464', 'f465', 'f466', 'f467', 'f468', 'f469', 'f470', 'f471', 'f472', 'f473', 'f474', 'f475', 'f476', 'f477', 'f478', 'f479', 'f480', 'f481', 'f482', 'f483', 'f484', 'f485', 'f486', 'f487', 'f488', 'f489', 'f490', 'f491', 'f492', 'f493', 'f494', 'f495', 'f496', 'f497', 'f498', 'f499']
training data did not have the following fields: f499

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм DMatrix..num_col() рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рд╕реНрддрдВрднреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓рдо рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдпрдерд╛, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдлреАрдЪрд░ рдирд╛рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:

    <strong i="7">@property</strong>
    def feature_names(self):
        """Get feature names (column labels).

        Returns
        -------
        feature_names : list or None
        """
        if self._feature_names is None:
            return ['f{0}'.format(i) for i in range(self.num_col())]
        else:
            return self._feature_names

self._feature_names рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ self.num_col() рдХреЗрд╡рд▓ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓реНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣реА "рдЯреВ-рдмреА- рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд" рдбреЗрдЯрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рд╕реНрддрдВрднреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдкрддрд╛ рдирд╣реАрдВ рдЕрднреА рддрдХ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред

рд╕рднреА 51 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рдХ рд╕реАрдПрд╕рд╕реА рд╣реЛред рдпрд╣ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рддрд░рд╣ рд╕реАрдПрд╕рдЖрд░ рдпрд╛ рд╕реАрдУрдУ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬрдм рд╕рдмрд╕реЗ рджрд╛рдПрдВ рдХреЙрд▓рдо рд╕рднреА 0 рдпрд╛ 1 рд╣реЛрддреЗ рд╣реИрдВ? рд╢рд╛рдпрдж #1091 рдФрд░ #1221 рдХреЗ рд╕рдорд╛рдиред

@sinhrks : рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ "рдпрд╛рджреГрдЪреНрдЫрд┐рдХ" рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЕрдХреНрд╕рд░ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд░рд▓ рдбреЗрдЯрд╛ рдкрд░ XGBoost рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (рдФрд░ рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ! рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдиреНрдп рд╕рднреА рдореЙрдбрд▓реЛрдВ рдХреЛ рдкреАрдЫреЗ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рдЕрдВрддрд░ рд╕реЗ)ред

рдлрд┐рд░, рдПрдХ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдирдП рдЯреБрдХрдбрд╝реЗ рдкрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╡рд╣ рдбреЗрдЯрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд┐рд░рд▓ рд╣реЛрдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП XGBoost рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рдЯреВрдЯрддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдЕрдиреНрдп (рдХрдо рд╕рдЯреАрдХ) рдореЙрдбрд▓ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛ рд╣реИ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд░рд▓ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдорд┐рд▓рд╛ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЕрдм рдХреНрдпреЛрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдж рдХреА рдмрд╛рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рдореМрдЬреВрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реА рд╣реИрдВред

рдореИрдВ xgboost рдПрдХ рд╕реНрдХреЗрд▓реЗрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдЙрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рддрдп рд╣реЛрдиреЗ рддрдХ рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ?

рд╣рд╛рдВ, рдЬрдм рдЖрдк рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рд░рд▓ рд╕рд░рдгреА рдХреЗ toarray() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рд╕реНрдореГрддрд┐ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЫреЛрдЯреЗ рд╕реНрд▓рд╛рдЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдореЗрд░реЗ рдЖрдИрдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛

реирем рдЕрдЧрд╕реНрдд реирежрезрем рдХреЛ рд░рд╛рдд резреж:рекрек рдмрдЬреЗ рдкреЗрдбреНрд░реЛ рд░реЛрдбреНрд░рд┐рдЧреНрдЬ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВ xgboost рдПрдХ рд╕реНрдХреЗрд▓реЗрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдЙрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рддрдп рд╣реЛрдиреЗ рддрдХ рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ?

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВред

рдпрджрд┐ рдореИрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рдФрд░ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ:

    bst = xgb.train(param, dtrain, num_round)

    # predict is not working without this code
    bst.save_model(model_file_name)
    bst = xgb.Booster(param)
    bst.load_model(model_file_name)

    preds = bst.predict(dtest)

@ рдмреНрд░рд╛рдпрди-рд╡реБрдбреНрд╕ рдореИрдВ tocsc рд╕рд╛рде рдПрдХ рдмреЗрд╣рддрд░ рдХрд╛рдо рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рд╢рд╛рдпрдж рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рджрдВрдб рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдШрдиреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдиреЗ рдЬрд┐рддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

xgboost рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдЗрд╕реЗ рдореЗрд░реА рд╕реНрдХреЗрд▓реЗрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛

class CSCTransformer(TransformerMixin):
    def transform(self, X, y=None, **fit_params):
        return X.tocsc()

    def fit_transform(self, X, y=None, **fit_params):
        self.fit(X, y, **fit_params)
        return self.transform(X)

    def fit(self, X, y=None, **fit_params):
        return self

    def get_params(self, deep=True):
        return {}

рди рддреЛ CSC рдкреНрд░рд╛рд░реВрдк рдФрд░ рди рд╣реА рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ xgboost рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 0.4a30 рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреНрд╡реАрдХ (рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмреАрдЬ рдХреЗ рд╕рд╛рде) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

>>> import xgboost as xgb
>>> import numpy as np
>>> from scipy import sparse
>>> 
>>> np.random.seed(10)
>>> X = sparse.rand(100,10).tocsr()
>>> test = sparse.rand(10, 500).tocsr()
>>> y = np.random.randint(2,size=100)
>>> 
>>> clf = xgb.XGBClassifier()
>>> clf.fit(X,y)
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
       gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3,
       min_child_weight=1, missing=None, n_estimators=100, nthread=-1,
       objective='binary:logistic', reg_alpha=0, reg_lambda=1,
       scale_pos_weight=1, seed=0, silent=True, subsample=1)
>>> 
>>> try:
...     pred = clf.predict_proba(test)
...     print "Works when csr with version %s" %xgb.__version__
... except ValueError:
...     "Broken when csr with version %s" %xgb.__version__
... 
'Broken when csr with version 0.6'
>>> try:
...     pred = clf.predict_proba(test.tocsc())
...     print "Works when csc with version %s" %xgb.__version__
... except ValueError:
...     "Still broken when csc with version %s" %xgb.__version__
... 
'Still broken when csc with version 0.6'
>>> try:
...     test[0,(test.shape[1]-1)] = 1.0
...     pred = clf.predict_proba(test)
...     print "Works when adding non-zero entries to last column with version %s" %xgb.__version__
... except ValueError:
...     "Still broken when adding non-zero entries to last column with version %s" %xgb.__version__
... 
/home/david.mcgarry/.conda/envs/ml/lib/python2.7/site-packages/scipy/sparse/compressed.py:730: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
  SparseEfficiencyWarning)
'Still broken when adding non-zero entries to last column with version 0.6'
>>> import xgboost as xgb
>>> import numpy as np
>>> from scipy import sparse
>>> 
>>> np.random.seed(10)
>>> X = sparse.rand(100,10).tocsr()
>>> test = sparse.rand(10, 500).tocsr()
>>> y = np.random.randint(2,size=100)
>>> 
>>> clf = xgb.XGBClassifier()
>>> clf.fit(X,y)
XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1,
       gamma=0, learning_rate=0.1, max_delta_step=0, max_depth=3,
       min_child_weight=1, missing=None, n_estimators=100, nthread=-1,
       objective='binary:logistic', reg_alpha=0, reg_lambda=1,
       scale_pos_weight=1, seed=0, silent=True, subsample=1)
>>> 
>>> try:
...     pred = clf.predict_proba(test)
...     print "Works when csr with version %s" %xgb.__version__
... except ValueError:
...     "Broken when csr with version %s" %xgb.__version__
... 
Works when csr with version 0.4
>>> try:
...     pred = clf.predict_proba(test.tocsc())
...     print "Works when csc with version %s" %xgb.__version__
... except ValueError:
...     "Still broken when csc with version %s" %xgb.__version__
... 
Works when csc with version 0.4
>>> try:
...     test[0,(test.shape[1]-1)] = 1.0
...     pred = clf.predict_proba(test)
...     print "Works when adding non-zero entries to last column with version %s" %xgb.__version__
... except ValueError:
...     "Still broken when adding non-zero entries to last column with version %s" %xgb.__version__
... 
/Users/david.mcgarry/anaconda/envs/ml/lib/python2.7/site-packages/scipy/sparse/compressed.py:739: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
  SparseEfficiencyWarning)
Works when adding non-zero entries to last column with version 0.4

рдпрд╣рд╛рдБ рд╡рд╣реА рдореБрджреНрджрд╛, рдкрд┐рдЫрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ред рд╕рдорд╛рди рдбреЗрдЯрд╛рд╕реЗрдЯ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдХреЗрд▓реЗрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди рдореЗрдВ рд╡рд┐рд░рд▓ рд╕реАрдПрд╕рдЖрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд @dmcgarry рдЙрджрд╛рд╣рд░рдг рдХреЛ tests/python/tests_with_sklearn.py рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рдореИрдВрдиреЗ рд╕реАрдПрд╕рдЖрд░ рд╡рд┐рд░рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде .toarray() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдореИрдВ рдПрдХ рд╕рд╣реЗрдЬреЗ рдЧрдП рдореЙрдбрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ .toarray() рдХреЗ рд╕рд╛рде рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдЧрд▓рдд рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВ 0.4a30 рдкрд░ рд╡рд╛рдкрд╕ рд▓реБрдврд╝рдХ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдореВрд▓ рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм DMatrix..num_col() рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рд╕реНрддрдВрднреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓рдо рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдиреНрдпрдерд╛, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдлреАрдЪрд░ рдирд╛рдо рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:

    <strong i="7">@property</strong>
    def feature_names(self):
        """Get feature names (column labels).

        Returns
        -------
        feature_names : list or None
        """
        if self._feature_names is None:
            return ['f{0}'.format(i) for i in range(self.num_col())]
        else:
            return self._feature_names

self._feature_names рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВрдХрд┐ self.num_col() рдХреЗрд╡рд▓ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓реНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣реА "рдЯреВ-рдмреА- рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд" рдбреЗрдЯрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдбреЗрдЯрд╛ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рд╕реНрддрдВрднреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред

рдкрддрд╛ рдирд╣реАрдВ рдЕрднреА рддрдХ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рднреА рдбрд░ рд╣реИ рдХрд┐ рд╕реНрдкреИрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдореМрд▓рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ @ рдмреНрд░рд╛рдпрди-рд╡реБрдбреНрд╕ рдиреЗ рдЬреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИ: рдорд╛рди рд▓реАрдЬрд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреЛрдиреЛрдВ рдореЗрдВ x рд╢реВрдиреНрдп-рдХреЙрд▓рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде => рд╣реЛрдЧрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рди рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ "feature_names(self)" рджреЛрдиреЛрдВ рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛ рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмреАрдЪ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓рдо рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди @dmcgarry рдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ,

import xgboost as xgb
import numpy as np
import scipy.sparse


def test_xgbclassifier_sklearn_sparse():
    np.random.seed(10)
    X = scipy.sparse.rand(100,10).tocsr()
    test = scipy.sparse.rand(10, 500).tocsr()
    y = np.random.randint(2,size=100)

    clf = xgb.XGBClassifier()
    clf.fit(X,y)
    pred = clf.predict_proba(test)

рдореИрдВрдиреЗ рд░реЗрдкреЛ рдХреЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдХреБрдЫ рдирдП рд╡рд┐рд░рд▓ рд╕рд░рдгреА рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдПред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП:
https://github.com/bryan-woods/xgboost/blob/sparse_test/tests/python/test_scipy_sparse.py

рдЪреЗрдХрдЖрдЙрдЯ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
рдЕрдЬрдЧрд░-рдПрдо рдирд╛рдХ рдкрд░реАрдХреНрд╖рдг/рдЕрдЬрдЧрд░/test_scipy_sparse.py

рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдХреЗ рдЦрд┐рд▓рд╛рдл рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред

рдореИрдВ рднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдЕрдВрддрддрдГ lib рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк рдЕрдзрд┐рдХрддрдо рдлреАрдЪрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдлреАрдЪрд░ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдлреАрдЪрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдореИрдХреНрд╕рд┐рдб: 0

рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ

рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 0.4 рдкрд░ рдХреИрд╕реЗ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реВрдВ?

рдкрд╛рдЗрдк рдЗрдВрд╕реНрдЯрд╛рд▓ --рдЕрдкрдЧреНрд░реЗрдб xgboost==0.4a30

рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд░рд▓ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдореИрдВ tf-idf рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ)ред рдореБрдЭреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ред рдкрд╛рд░рд┐рддреЛрд╖рд┐рдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдк рд╕рднреА рдЬрд┐рдиреНрд╣реЗрдВ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ: рдХреНрдпрд╛ рдЖрдк рдЬрд┐рд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ #1606 рдореЗрдВ рд╕реБрдзрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ?

рд╣рд╛рдВ, рдореИрдВрдиреЗ xgboost рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред

рдпрд╣ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдмрдбрд╝реЗ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЧреНрд░рд┐рдб рд╕рд░реНрдЪ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓рдкреЗрдЯ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реАрд╡реА рд╕реНрдкреНрд▓рд┐рдЯ рдХреЗ рднреАрддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЯреНрд░реЗрди/рд╕реАрд╡реА рдЯреЗрд╕реНрдЯ рд╕реЗрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реБрд╡рд┐рдзрд╛рдПрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИрдВред

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖрдХрд╛рд░ рд╕рдВрдХреЗрдд рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ scipy sparse matrices рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ Xgboost Python рдореВрд▓ API (0.6) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ LIBSVM [sparse] рдкреНрд░рд╛рд░реВрдк рдлрд╝рд╛рдЗрд▓ рд╕реЗ DMatrix рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ, рдпрджрд┐ рдХрд┐рд╕реА рднреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЕрдВрддрд┐рдо рдХреЙрд▓рдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдбрдореА рдХреЙрд▓рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдерд╛ :(

train_fv_file = 'train_fv_eval.svm'
dtrain = xgb.DMatrix(train_fv_file, feature_names=feature_vector_labels, feature_types=feature_vector_types)

рдпрджрд┐ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ? рдЕрдзрд┐рдорд╛рдирддрдГ, рд╕реНрдХреЗрд▓реЗрд░ рдкрд░рдд рдХреЗ рдмрд┐рдирд╛ (рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред

@gabrielspmoreira : рдореИрдВ рдПрдХ LIBSVM рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдмрд╛рдд рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдХреЙрд▓рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд░рд▓ рд╣реИрдВ ... рдЙрд╕ DMatrix рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдХреЛ num_col рд╕рдВрдХреЗрдд рд╣реЛрдиреЗ рд╕реЗ рднреА рд▓рд╛рдн рд╣реЛрдЧрд╛ред

In [42]: matrix = xgboost.DMatrix(scipy.sparse.csr_matrix([[0, 2, 3, 0], [0, 2, 2, 0], [1, 0, 5, 0], [0, 1, 0, 0]], shape=(4,4)))
In [43]: matrix.num_col()
Out[43]: 3L

рдЬрдм рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ/рд╕реНрддрдВрднреЛрдВ рдХреЗ рдЙрдк-рдирдореВрдиреЗ рдкрд░ рдПрдХ рдирдпрд╛ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИ (рд╕реНрддрдВрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдордиреЗ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдХреЙрд▓рдо рд╣реИрдВ)ред рдпрд╣ рдЕрдХреНрд╕рд░ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдпрд╛ рдмрд╣реБрдд рд╣реА рд╡рд┐рд░рд▓ рд╕реНрддрдВрднреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╕рднреА рд╢реВрдиреНрдп рд╣реЛрдЧрд╛ред

рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рдЯреНрд░реЗрди/рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рдХреЗ рдмреАрдЪ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореЙрдбрд▓ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ ValueError рдереВрдХрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдпрд╣ xgboost core рдФрд░ sklearn-wrapper рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ/рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

@ l3link : рдЖрдкрдХрд╛ рдХреЛрдб рдкреБрд░рд╛рдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореБрдЭреЗ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:

In [2]: import scipy
   ...: import xgboost
   ...: matrix = xgboost.DMatrix(scipy.sparse.csr_matrix([[0, 2, 3, 0], [0, 2, 2, 0], [1, 0, 5, 0], [0, 1, 0, 0]], shape=(4,4)))
   ...: matrix.num_col()
   ...:
Out[2]: 4L

In [3]: matrix._init_from_csr??
Signature: matrix._init_from_csr(csr)
Source:
    def _init_from_csr(self, csr):
        """
        Initialize data from a CSR matrix.
        """
        if len(csr.indices) != len(csr.data):
            raise ValueError('length mismatch: {} vs {}'.format(len(csr.indices), len(csr.data)))
        self.handle = ctypes.c_void_p()
        _check_call(_LIB.XGDMatrixCreateFromCSREx(c_array(ctypes.c_size_t, csr.indptr),
                                                  c_array(ctypes.c_uint, csr.indices),
                                                  c_array(ctypes.c_float, csr.data),
                                                  len(csr.indptr), len(csr.data),
                                                  csr.shape[1],
                                                  ctypes.byref(self.handle)))
File:      c:\anaconda2\lib\site-packages\xgboost-0.6-py2.7.egg\xgboost\core.py
Type:      instancemethod

рд╣реБрд╣,

In [64]: xgboost.__version__ Out[64]: '0.6'

Signature: matrix._init_from_csr(csr) Source: def _init_from_csr(self, csr): """ Initialize data from a CSR matrix. """ if len(csr.indices) != len(csr.data): raise ValueError('length mismatch: {} vs {}'.format(len(csr.indices), len(csr.data))) self.handle = ctypes.c_void_p() _check_call(_LIB.XGDMatrixCreateFromCSR(c_array(ctypes.c_ulong, csr.indptr), c_array(ctypes.c_uint, csr.indices), c_array(ctypes.c_float, csr.data), len(csr.indptr), len(csr.data), ctypes.byref(self.handle))) File: ~/anaconda/lib/python2.7/site-packages/xgboost/core.py Type: instancemethod

рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ .6 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ XGDMatrixCreateFromCSRex рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрдЬрд╛рдп XGDMatrixCreateFromCSR рд╣реИ, рдЬреЛ рдЖрдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдУрдПрд╕рдПрдХреНрд╕ рд╡рд┐рддрд░рдг рдЕрд▓рдЧ рд╣реЛ?

рдореБрдЭреЗ рдпрд╣ рднреА рдбрд░ рд╣реИ рдХрд┐ рд╕реНрдкреИрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдореМрд▓рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ @ рдмреНрд░рд╛рдпрди-рд╡реБрдбреНрд╕ рдиреЗ рдЬреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рд╣реИ: рдорд╛рди рд▓реАрдЬрд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреЛрдиреЛрдВ рдореЗрдВ x рд╢реВрдиреНрдп-рдХреЙрд▓рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде => рд╣реЛрдЧрд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рди рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ "feature_names(self)" рджреЛрдиреЛрдВ рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╕реБрд╡рд┐рдзрд╛ рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреНрд░реЗрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмреАрдЪ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЙрд▓рдо рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ 0.4 рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдпрд╛ рдФрд░ рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрднреА рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдкреИрд╕ рдореИрдЯреНрд░рд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ l3link рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рд╡рд┐рдЪрд┐рддреНрд░ рдирд╣реАрдВ рд╣реИ: рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛рдПрдВ (рдпрд╛ рдкреАрдкреАрдЖрдИ рдкреИрдХреЗрдЬ) рдХрднреА-рдХрднреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ https://github.com/dmlc/xgboost/blob/master/python-package/xgboost/VERSION рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд┐рдЫрд▓реА рдмрд╛рд░ 29 рдЬреБрд▓рд╛рдИ рдХреЛ рдФрд░ рдЕрдВрддрд┐рдо pypi рдкреИрдХреЗрдЬ https://pypi.python рдХреЛ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛ред org/pypi/xgboost/ рджрд┐рдирд╛рдВрдХ 9 рдЕрдЧрд╕реНрдд рд╣реИред рдЬрдмрдХрд┐ рдлрд┐рдХреНрд╕ 23 рд╕рд┐рддрдВрдмрд░ #1606 рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреГрдкрдпрд╛ рдЬреАрдердм рд╕реЗ рдирд╡реАрдирддрдо рдХреЛрдб рджреЗрдЦреЗрдВред

рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реБрдИ рдЬрдм рдореИрдВрдиреЗ рдкрд╛рдВрдбрд╛ DataFrame (рдЧреИрд░-рд╡рд┐рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ numpy ndarray рдорд╛рдзреНрдпрдо рд╕реЗ df.as_matrix() , рдФрд░ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ред

рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдХреЛ рдРрд░реЗ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓ рдЧрдпрд╛ред

рдЯреЗрд╕реНрдЯ-рд╕реЗрдЯ рдореЗрдВ рдХреЙрд▓рдо рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЬреИрд╕реЗ рдЯреНрд░реЗрди рд╕реЗрдЯ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рддрдп рдХрд┐рдпрд╛ рдерд╛ред
рдореИрдВрдиреЗ рдкрдВрдбреЛрдВ рдХреЗ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрд┐рдирд╛, .as_matrix() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрд╕реА рдореБрджреНрджреЗ рдХреЛ рдлреЗрдВрдХ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ рдХрд┐рдпрд╛:

test = test[train.columns]

рдореИрдВрдиреЗ @warpuv рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░ рдЧрдпрд╛ред рдореЗрд░рд╛ рдбреЗрдЯрд╛ рдмрдбрд╝рд╛ рд╣реИ, рдореИрдВ рдХреЙрд▓рдо рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЯреНрд░реЗрди/рдкрд░реАрдХреНрд╖рдг рд╕реАрдПрд╕рдЖрд░ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЛ рд╕реАрдПрд╕рд╕реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рд░рдЧрд░ рд░рд╣рд╛

Xtrain = scipy.sparse.csc_matrix(Xtrain)

рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░ csc_matrix рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкрд░ рдкрд░реАрдХреНрд╖рдг 0.6a2 :

    X_train = scipy.sparse.csc_matrix(X_train)
    X_test = scipy.sparse.csc_matrix(X_test)

    xgb_train = xgb.DMatrix(X_train, label=y_train)
    xgb_test = xgb.DMatrix(X_test, label=y_test)
type(X_train) <class 'scipy.sparse.csr.csr_matrix'>
type(X_test) <class 'scipy.sparse.csr.csr_matrix'>
type(X_train) <class 'scipy.sparse.csc.csc_matrix'>
type(X_test) <class 'scipy.sparse.csc.csc_matrix'>
type(xgb_train) <class 'xgboost.core.DMatrix'>
type(xgb_test) <class 'xgboost.core.DMatrix'>

рдореЗрд░рд╛ рдореВрд▓ рд╕реНрдкреИрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реНрдХреЗрд▓реЗрд░ рдЯреАрдПрдл-рдЖрдИрдбреАрдПрдл рд╡реЗрдХреНрдЯрд░рд┐рдЬрд╝рд░ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ csr_matrix рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдерд╛ред

рдХреНрдпрд╛ рдЕрднреА рддрдХ рдХреЛрдИ рдлрд┐рдХреНрд╕ рд╣реИ?

python3 рдореЗрдВ рдЕрднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (0.7.post3) рдмрдирд╛рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред рдЙрдкрд░реЛрдХреНрдд @dmcgarry рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдореБрдЭреЗ csr_matrix рдФрд░ csc_matrix рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИрдВред

import xgboost as xgb
import numpy as np
from scipy import sparse

np.random.seed(10)

X_csr = sparse.rand(100, 10).tocsr()
test_csr = sparse.rand(10, 500).tocsr()

X_csc = sparse.rand(100, 10).tocsc()
test_csc = sparse.rand(10, 500).tocsc()

y = np.random.randint(2, size=100)

clf_csr = xgb.XGBClassifier()
clf_csr.fit(X_csr, y)

clf_csc = xgb.XGBClassifier()
clf_csc.fit(X_csc, y)

# Try with csr
try:
    pred = clf_csr.predict_proba(test_csr)
    print("Works when csr with version %s" %xgb.__version__)
except ValueError:
    print("Broken when csr with version %s" %xgb.__version__)

try:
    test_csr[0,(test_csr.shape[1]-1)] = 1.0
    pred = clf_csr.predict_proba(test_csr)
    print("Works when adding non-zero entries to last column with version %s" %xgb.__version__)
except:
    print("Still broken when adding non-zero entries to last column with version %s" %xgb.__version__)

# Try with csc
try:
    pred = clf_csc.predict_proba(test_csc)
    print("Works when csc with version %s" %xgb.__version__)
except ValueError:
    print("Broken when csc with version %s" %xgb.__version__)

try:
    test_csc[0,(test_csc.shape[1]-1)] = 1.0
    pred = clf_csc.predict_proba(test_csc)
    print("Works when adding non-zero entries to last column with version %s" %xgb.__version__)
except:
    print("Still broken when adding non-zero entries to last column with version %s" %xgb.__version__)

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдЖ:

Broken when csr with version 0.7
Still broken when adding non-zero entries to last column with version 0.7
Broken when csc with version 0.7
Still broken when adding non-zero entries to last column with version 0.7

рдХреГрдкрдпрд╛ рдорджрдж рдХрд░реЗрдВ

рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рджреЛ рдмрд╛рд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдВред рдПрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмрд╕ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдХреЛ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ test_df = test_df[train_df.columns] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдХреЗ рдХреЙрд▓рдо рдирд╛рдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, train_df рдФрд░ test_df рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдХреЙрд▓рдо рдирд╛рдо рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА @CathyQian рдирд╣реАрдВ рд╕рдордЭрддрд╛, рдХреНрдпрд╛ рд╡реЗ train_df / test_df рд╡рд┐рд░рд▓ рд╣реИрдВ? рд╕рд╛рде рд╣реА, рдЬрдм рдЖрдк рдЗрди рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рдереЗ рддреЛ рдЖрдк xgboost рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЪрд▓рд╛ рд░рд╣реЗ рдереЗ?

@CathyQian xgboost рдХреЙрд▓рдо рдХреЗ _order_ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

@ewellinger WRT рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг: 10 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдХреЛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рд▓рд┐рдП 500 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреА рдЬрд╛рддреА рд╣реИред рд╕рд╛рде рд╣реА, рдЕрдкрдиреЗ рд╕рднреА рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рд╕реЗ DMatrices рдмрдирд╛рдирд╛ рдФрд░ рдЙрдирдХреЗ num_col рдФрд░ num_row рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВред

"рджреБрд░реНрд▓рдн рдореБрджреНрджреЛрдВ" рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИ:

  • рд╕реАрдПрд╕рдЖрд░ рд╕реЗ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдПрдХ рдореЙрдбрд▓ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╖рдп рдерд╛ред
  • рд╕реАрдПрд╕рд╕реА рд╕реЗ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рд╣реА рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдпрд╛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рджреМрд░рд╛рди рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд░рд▓ # 2630 рд╣реЛрддреА рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдареАрдХ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред
  • DMatrix рдореЗрдВ libsvm рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓рдо рдХреА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

@warpuv рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдШрдиреЗ рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдереАред (рдирд╡реАрдирддрдо рдПрдирд╛рдХреЛрдВрдбрд╛ рд╕реЗ xgboost v.0.6ред)
рддреНрд░реБрдЯрд┐ рддрдм рд╣реБрдИ рдЬрдм рдореИрдВрдиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдлреАрдЪрд░ рд╕рдмрд╕реЗрдЯ рдкрд░ рдХрдИ рдкреНрд░рддрд┐рдЧрдорди рдЪрд▓рд╛рдПред
рдЕрдЧрд▓реЗ рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд░ рдмрд╛рд░ рдирдпрд╛ рдореЙрдбрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

  • DMatrix рдореЗрдВ libsvm рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓рдо рдХреА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

0.8 рддрдХ, рдпрд╣ рдЕрднреА рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛?

рд╕реАрдПрд╕рд╕реА рд╕реЗ рдбреАрдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рд╣реА рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдпрд╛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рджреМрд░рд╛рди рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд░рд▓ # 2630 рд╣реЛрддреА рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдареАрдХ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред

@рдЦреЛрдЯрд┐рд▓реЛрд╡ #3553 рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред

DMatrix рдореЗрдВ libsvm рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓рдо рдХреА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

@MonsieurWave рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, dmlc-core рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рджреЛред

@ hcho3 рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ libsvm рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЗрддрдиреА рд╡рд┐рд░рд▓ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЕрд░реНрдерд╛рдд: рдорд╛рди 0 рд╡рд╛рд▓реЗ рдХреЙрд▓рдо рдХреЛ рднреА рд╕рд╣реЗрдЬрдирд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

frankzhangrui picture frankzhangrui  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Str1ker17 picture Str1ker17  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

XiaoxiaoWang87 picture XiaoxiaoWang87  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

choushishi picture choushishi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RanaivosonHerimanitra picture RanaivosonHerimanitra  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ