データマイニング学習-準備編-python基礎


python科学計算
1.pythonを使用したデータセットの組み込み
from sklearn import datasets
iris = datasets.load_iris()
>>> print(iris.data)  
[[  0.   0.   5. ...,   0.   0.   0.]
 [  0.   0.   0. ...,  10.   0.   0.]
 [  0.   0.   0. ...,  16.   9.   0.]
 ...,
 [  0.   0.   1. ...,   6.   0.   0.]
 [  0.   0.   2. ...,  12.   0.   0.]
 [  0.   0.  10. ...,  12.   1.   0.]]

2.svmの使用
>>> from sklearn import svm
>>> clf = svm.SVC(gamma=0.001, C=100.)

3.フィットfitとpredictfit(X, y)  および  predict(T) .
X, y = iris.data, iris.target

4.配列のサイズを取得する——shape属性
   iris.shape  
  得(28,19)
5.target
digits.targetは、デジタルデータセットの各サンプルに対応する実際の数値です.つまり私たちのプログラムは勉強しなければなりません.
6.pickle scikitのモデルを保存する
>>>import pickle
>>>s = pickle.dumps(clf)
>>>clf2 = pickle.loads(s)
7.Estimatorsオブジェクト
1つのestimatorは、データから学習された任意のオブジェクトであってもよい.彼は分類アルゴリズム(classification)、回帰アルゴリズム(regression)、クラスタリングアルゴリズム(clustering)、または変換アルゴリズムかもしれない.
彼がどんなアルゴリズムであろうと、すべてのestimatorオブジェクトが外部に露出しています. fit メソッド、メンバーメソッドの操作オブジェクトがデータセット
1つのestimatorのすべてのパラメータは、初期化時に設定したり、対応する属性で変更したりすることができます.
>>> estimator = Estimator(param1=1, param2=2)
>>> estimator.param1

predict(X)
 予測データセット用  X
 の未知のラベルのサンプルを返し、予測のラベルを返します.  y .
各estimatorは、estimatorのテストデータ上のテストスコアを計算する方法を暴露します. score 得点が大きいほどestimatorはデータのフィットモデルに良い. .
8.KNN(k nearest neighbors)分類器例:
>>> # Split iris data in train and test data
>>> # A random permutation, to split the data randomly
>>> np.random.seed(0)
>>> indices = np.random.permutation(len(iris_X))
>>> iris_X_train = iris_X[indices[:-10]]
>>> iris_y_train = iris_y[indices[:-10]]
>>> iris_X_test  = iris_X[indices[-10:]]
>>> iris_y_test  = iris_y[indices[-10:]]
>>> # Create and fit a nearest-neighbor classifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> knn = KNeighborsClassifier()
>>> knn.fit(iris_X_train, iris_y_train) 
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=5, p=2,
           weights='uniform')
>>> knn.predict(iris_X_test)
array([1, 2, 1, 0, 0, 0, 2, 1, 2, 0])
>>> iris_y_test
array([1, 1, 1, 0, 0, 0, 2, 1, 2, 0])

9.pythonでcsvファイルを処理し、標準ライブラリのcsvモジュールを使用できます.その中のwriterメソッドとreaderメソッドはcsvファイルを読み書きすることができます.
import csv
rf = open('bank.csv','rb')
reader = csv.reader(rf)

ここで、csvファイルを開くには、バイナリ形式で開く必要があります.このときreaderは反復器であり、next()とforループしか使用できません.reader.next()は、最初の行の内容を返します.
すべての内容を見るにはforループを使うことができます.
for row in reader: print row

次に、csvファイルの書き込みを見てみましょう.
wf = open('bank2.csv','wb')
writer = csv.writer(wf)
writer.writerow(['id','age','sex','region','income','married','children','car','save_act','current_act','mortgage','pep'])
writer.writerow(reader.next())

10.線形回帰LR
線形回帰の最も簡単な形式は,データセットのためにパラメータセットを調整することによって線形モデルをフィッティングし,その残差ができるだけ小さくなるようにすることである.
線形モデル:
  • :データ
  • :ターゲット変数
  • :係数
  • :観測ノイズ
  • >>> from sklearn import linear_model
    >>> regr = linear_model.LinearRegression()
    >>> regr.fit(diabetes_X_train, diabetes_y_train)
    LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
    >>> print(regr.coef_)
    [   0.30349955 -237.63931533  510.53060544  327.73698041 -814.13170937
      492.81458798  102.84845219  184.60648906  743.51961675   76.09517222]
    >>> # The mean square error
    >>> np.mean((regr.predict(diabetes_X_test)-diabetes_y_test)**2)
    2004.56760268...
    >>> # Explained variance score: 1 is perfect prediction
    >>> # and 0 means that there is no linear relationship
    >>> # between X and Y.
    >>> regr.score(diabetes_X_test, diabetes_y_test) 
    0.5850753022690...

    11.データセットを folds トレーニングとテストに使用
    >>> import numpy as np
    >>> X_folds = np.array_split(X_digits, 3)
    >>> y_folds = np.array_split(y_digits, 3)

    12.クロス検証ビルダー
    クロス検証ジェネレータ(cross-validation generators)は、データ分割の目的を達成するためにインデックスリストを生成します.
    >>> from sklearn import cross_validation
    >>> k_fold = cross_validation.KFold(n=6, n_folds=3)
    >>> for train_indices, test_indices in k_fold:
    ...      print('Train: %s | test: %s' % (train_indices, test_indices))
    Train: [2 3 4 5] | test: [0 1]
    Train: [0 1 4 5] | test: [2 3]
    Train: [0 1 2 3] | test: [4 5]
    

    クロス検証ジェネレータに基づいて、クロス検証の実装は非常に簡単になります.
    >>> kfold = cross_validation.KFold(len(X_digits), n_folds=3)
    >>> [svc.fit(X_digits[train], y_digits[train]).score(X_digits[test], y_digits[test])
    ...          for train, test in kfold]
    [0.93489148580968284, 0.95659432387312182, 0.93989983305509184]
    

    estimatorのscoreを計算するために メソッドの値、sklearnは補助的なメソッドを暴露しました.
    >>> cross_validation.cross_val_score(svc, X_digits, y_digits, cv=kfold, n_jobs=-1)
    array([ 0.93489149,  0.95659432,  0.93989983])

    13.Numpyライブラリ
    (1)平均、分散、共分散を求める
    平均値-
    Mean()平均を求める
    print('残差平均:%.2f'%np.mean((model.predict(X)-y)**2)
    )
    分散-
    var()求方差
    print
    (np.
    var
    ([
    6
    ,
    8
    ,
    10
    ,
    14
    ,
    18
    ], ddof=
    1
    ))
    #numpy.var()は分散を直接計算できます
    共分散——cov()共分散を求める
    print(np.cov([
    6, 8, 10, 14, 18
    ], [
    7, 9, 13, 17.5, 18
    ])[
    0
    ][
    1
    ])#numpy.cov()計算共分散
    (2)行列計算-求逆inv,点乗dot,転置transpose
    from numpy.linalg import inv
    from numpy import dot, transpose
    X = [[1, 6, 2], [1, 8, 1], [1, 10, 0], [1, 14, 2], [1, 18, 0]]
    y = [[7], [9], [13], [17.5], [18]]
    print(dot(inv(dot(transpose(X), X)), dot(transpose(X), y)))

    (3)
    lstsq()を用いて最小二乗を求める
    from numpy.linalg import lstsqprint(lstsq(X, y)[0])

    14.Sklearnライブラリ
    (1)linear_に基づくModel.LinearRegressionは一元/多重線形回帰モデルを構築する.LinearRegressionとpreprocessing.PolynomialFeaturesに基づいて、一元多重線形回帰モデルが構築されます.linear_に基づいてmodel.SGDRegressorはランダム勾配降下SGDモデルを確立する.
    (2)model.fit()モデリングを使用し、model.predict()予測を使用し、model.score()を使用してテストセットのR-Squareを求める.
    (3)crossベース_validation、trainを使うtest_split()関数はトレーニングセットとテストセットを区分し、cross_を使用します.val_score()交差検査のR-Square結果を計算する;
  • 線形回帰関数LinearRegressionを呼び出します.
    from sklearn.linear_model import LinearRegression
    1
  • 1
  • fit()一元線形回帰モデル
    X = [[8], [9], [11], [16], [12]]
    y = [[11], [8.5], [15], [18], [11]]
    model = LinearRegression() 
    model.fit(X, y)#          
    1
  • 2 3 4 1 1 2 3 4
  • fit()多重線形回帰モデル
    X = [[6, 2], [8, 1], [10, 0], [14, 2], [18, 0]]
    y = [[7], [9], [13], [17.5], [18]]
    model = LinearRegression()
    model.fit(X, y) #          
    1
  • 2 3 4 1 1 2 3
  • predict()fit()で算出したモデルパラメータからなるモデルは、解釈変数を予測して得られた値である.
    print('    12      :$%.2f' % model.predict([12])[0]) #    
    
    X_test = [[8, 2], [9, 0], [11, 2], [16, 2], [12, 0]]
    predictions = model.predict(X_test)#       
    1
  • 2 3 4 1 2 3 4
  • mode.score計算R方R-Square
    model.score(X_test, y_test) #LinearRegression score      R 
    1
  • 1
  • 一元多項式回帰モデル
    from sklearn.linear_model import LinearRegression
    from sklearn.preprocessing import PolynomialFeatures 
    
    X_train = [[6], [8], [10], [14], [18]]
    y_train = [[7], [9], [13], [17.5], [18]] #       ,      
    X_test = [[6], [8], [11], [16]]#      
    y_test = [[8], [12], [15], [18]]
    
    quadratic_featurizer = PolynomialFeatures(degree=2) #          
    X_train_quadratic = quadratic_featurizer.fit_transform(X_train) # fit()      
    regressor_quadratic = LinearRegression() 
    regressor_quadratic.fit(X_train_quadratic, y_train)# fit()    
    
    X_test_quadratic = quadratic_featurizer.transform(X_test) #        
    y_test_quadratic=regressor_quadratic.predict(xx_quadratic) #        
    
    print('       r-squared', regressor.score(X_test, y_test)) #  R-Square
    1
  • 2 2 3 4 4 5 6 7 7 8 9 18210 11 12 12 18 13 14 18215 18216 16 17 17 1 2 2 2 3 1824 5 24791825 24791825 24791826 1826 6 6 1826 24791826 6 6 6 24 7 8 9 10 11 12 13 14 15 16 17
  • train_test_split()はデータセットによって訓練セットとテストセットに分けられる.パーティションの割合は設定できます.デフォルトでは25%がテストセットに割り当てられます.
    from sklearn.cross_validation import train_test_split
    df = pd.read_csv('mlslpic/winequality-red.csv', sep=';')
    X = df[list(df.columns)[:-1]]
    y = df['quality']
    X_train, X_test, y_train, y_test = train_test_split(X, y)
    1
  • 2 3 4 5 1 2 3 4 5
  • train_sizeトレーニングセットとテストセットの
    X_train,X_test,y_train,y_test=train_test_split(X,y,train_size=0.5)
  • cross_val_score() score ;
    from sklearn.cross_validation import cross_val_score
    regressor = LinearRegression()
    scores = cross_val_score(regressor, X, y, cv=5)
    print(scores.mean(), scores
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4
  • scikit-learn
    from sklearn.datasets import load_boston
    • 1
    • 1
  • SGDRegressor, StandardScaler, R-Square
    from sklearn.linear_model import SGDRegressor
    from sklearn.preprocessing import StandardScaler
    X_scaler = StandardScaler()
    y_scaler = StandardScaler()
    
    X_train = X_scaler.fit_transform(X_train)
    y_train = y_scaler.fit_transform(y_train)
    X_test = X_scaler.transform(X_test)
    y_test = y_scaler.transform(y_test)
    
    regressor = SGDRegressor(loss='squared_loss')
    regressor.fit_transform(X_train, y_train) #    
    
    print('   R  :', regressor.score(X_test, y_test))

  • 15.list

    >>> a = [1,2,3,4,5,6]
    >>> a[:-1]    #  [1, 2, 3, 4, 5]
    >>> a[1:2]  #  [2]
    >>> a[1:]   #  [2, 3, 4, 5, 6]
    

    16. enumerate()ループを し、 のシーケンス idx( に かれた)と val( ろに かれた)を た.
    for idx, val in enumerate(ints):
     print(idx, val)

    17.linspace() を する
    xx = np.linspace(0, 26, 100)
    xx #  : array([  0. ,   6.5,  13. ,  19.5,  26. ])

    arangelinsapceに け、
    は から のステップ で され、 もステップ の である にのみ まれる.
    は と の を し、 の の である.
    X=np.arange(-6,6,5);X
    
    #   array([-6, -1,  4])
    
    X=np.arange(-6,6,1);X
    
    #   array([-6, -5, -4, -3, -2, -1,  0,  1,  2,  3,  4,  5])
    
    X=np.linspace(-6,6,5);X
    
    #    array([-6., -3.,  0.,  3.,  6.])

    18.LogisticRegression を いて と を う
    from sklearn.linear_model.logistic import LogisticRegression
    classifier = LogisticRegression()
    classifier.fit(X_train, y_train)
    predictions = classifier.predict(X_test)

    19. な い -MAth
  • ( 、 、 、 、 、 、べき )は、mathライブラリ
  • を び す はありません.
  • ( 、 、 、 )は、mathライブラリ
    import math
    
    print math.sin(10)       # sine
    print math.cos(10)       # cosine
    print math.tan(10)       # tangent 
    
    print math.asin(10)      # arc sine
    print math.acos(10)      # arc cosine
    print math.atan(10)      # arc tangent
    
    print math.sinh(10)      # hyperbolic sine    
    print math.cosh(10)      # hyperbolic cosine
    print math.tanh(10)      # hyperbolic tangent
    
    print math.pow(2, 4)     # 2 raised to 4
    print math.exp(4)        # e ^ 4
    print math.sqrt(10)      # square root
    print math.pow(5, 1/3.0) # cubic root of 5
    print math.log(3)        # ln; natural logarithm
    print math.log(100, 10)  # base 10
    
    print math.ceil(2.3)    # ceiling
    print math.floor(2.7)   # floor
    
    print math.pi
    print math.e
  • を び す がある.
    20.numpy.linalg.eig() と ベクトルを する
    import numpy as np
    w,v=np.linalg.eig(np.array([[1,-2],[2,-6]]))

    sklearnユーザーズマニュアルhttp://download.csdn.net/detail/ssrob/8757217