データマイニング学習-準備編-python基礎
python科学計算
1.pythonを使用したデータセットの組み込み
2.svmの使用
3.フィットfitとpredict
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のすべてのパラメータは、初期化時に設定したり、対応する属性で変更したりすることができます.
predict(X)
予測データセット用
の未知のラベルのサンプルを返し、予測のラベルを返します.
各estimatorは、estimatorのテストデータ上のテストスコアを計算する方法を暴露します. score 得点が大きいほどestimatorはデータのフィットモデルに良い. .
8.KNN(k nearest neighbors)分類器例:
9.pythonでcsvファイルを処理し、標準ライブラリのcsvモジュールを使用できます.その中のwriterメソッドとreaderメソッドはcsvファイルを読み書きすることができます.
ここで、csvファイルを開くには、バイナリ形式で開く必要があります.このときreaderは反復器であり、next()とforループしか使用できません.reader.next()は、最初の行の内容を返します.
すべての内容を見るにはforループを使うことができます.
次に、csvファイルの書き込みを見てみましょう.
10.線形回帰LR
線形回帰の最も簡単な形式は,データセットのためにパラメータセットを調整することによって線形モデルをフィッティングし,その残差ができるだけ小さくなるようにすることである.
線形モデル::データ :ターゲット変数 :係数 :観測ノイズ
11.データセットを folds トレーニングとテストに使用
12.クロス検証ビルダー
クロス検証ジェネレータ(cross-validation generators)は、データ分割の目的を達成するためにインデックスリストを生成します.
クロス検証ジェネレータに基づいて、クロス検証の実装は非常に簡単になります.
estimatorの
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
(3)
lstsq()を用いて最小二乗を求める
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を呼び出します. 1 fit()一元線形回帰モデル 2 3 4 1 1 2 3 4 fit()多重線形回帰モデル 2 3 4 1 1 2 3 predict()fit()で算出したモデルパラメータからなるモデルは、解釈変数を予測して得られた値である. 2 3 4 1 2 3 4 mode.score計算R方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%がテストセットに割り当てられます. 2 3 4 5 1 2 3 4 5
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とpredict
fit(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()求方差
(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結果を計算する;
from sklearn.linear_model import LinearRegression
1 X = [[8], [9], [11], [16], [12]]
y = [[11], [8.5], [15], [18], [11]]
model = LinearRegression()
model.fit(X, y)#
1 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 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 model.score(X_test, y_test) #LinearRegression score R
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 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 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. ])
をarange
とlinsapce
に け、
は から のステップ で され、 もステップ の である にのみ まれる.
は と の を し、 の の である.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