难得有不涉及机密,同时又有一定记录价值的收获,记录下来,以备查阅。
欢迎转载,请注明出处:
http://blog.csdn.net/u010967382/article/details/50225291
1.准备数据
***基础:LIBSVM数据格式***
数据文件格式如下:
<label> <index1>:<value1> <index2>:<value2> ...
其中
<label> 是训练数据集的目标值,对于分类,它是标识某类的整数(支持多个类);对于回归,是任意实数。
<index> 是以1开始的整数。如果特征值为0,特征冒号前面的(姑且称做序号)可以不连续。如:-15 1:0.708 3:-0.3333;
<value>为实数,也就是我们常说的自变量。数据之间用空格隔开。
推荐使用该格式。
******
样本数据支持多种格式,这里用
libsvm格式做示例:
1 1:1 2:175 3:75
0 1:1 2:175 3:50
1 1:1 2:170 3:65
0 1:1 2:180 3:60
1 1:0 2:165 3:50
1 1:0 2:160 3:45
0 1:0 2:168 3:40
0 1:0 2:170 3:42
这是一个虚构数据集,因变量Y是体重正常与否,自变量分别是性别(男1,女0)、身高、体重(公斤)
2.建模 & 预测
>>> from sklearn.datasets import load_svmlight_file #用于加载libsvm格式数据
>>> from sklearn.linear_model import LogisticRegression
>>> lrm= LogisticRegression() #使用默认参数创建逻辑回归模型实例
>>> x_train, y_train = load_svmlight_file("/sktest/sklearn_testdata") #加载libsvm训练数据
>>> lrm.fit(x_train,y_train) #训练模型
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
verbose=0, warm_start=False)
"""至此,模型已训练完毕"""
>>> y= lrm.predict([1,174,50]) #预测 男性,174身高,50公里,体重是否正常
>>>
print y
[ 0.]
>>> yp =