'파이썬'에 해당되는 글 35건

  1. 2020.11.14 [ ML ] Red wine, White wine 구분
  2. 2020.11.14 [ML] numpy pandas 설치
  3. 2020.02.04 [Python_01] 문자열 관련 명령어
파이썬2020. 11. 14. 20:30
728x90

* 출처 : https://github.com/lsi8546/Wine



numpy, pandas, seaborn,

mat plot lib을 import합니다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import preprocessing
%matplotlib inline

# csv 파일을 wines에 읽어옴
wines = pd.read_csv('wine_dataset.csv')
wines

 

 

 

파일을 읽어온 wines의 style 칼럼의

value를 count 합니다.

normalize=True를 통해 그 값을 0~1 사이의 수치로 표현합니다.

 

data = wines["style"].value_counts(normalize=True)
data

 

 

white wine이 75%,

red wine이 25%로 구성되어 있다는 것을 알 수 있습니다.

 

 

scaling을 했더니 정확한 값이 나오지 않아서  (혹시 이유 아시는 분 댓글 부탁드립니다!)

그냥 wines_scale에 wines를 copy했습니다.

#Scaling the continuos variables
wines_scale = wines.copy()
# scaler = preprocessing.StandardScaler()
# columns = wines.columns[0:12]
# wines_scale[columns] = scaler.fit_transform(wines_scale[columns])
# wines_scale.head()

 

파일의 'style' 칼럼만 읽어옵니다

# label_encoder = preprocessing.LabelEncoder()
le = wines_scale['style']
print(le)

 

 

 

33%를 테스트 코드로 이용합니다.

(자료가 많아서 67%로 학습)

 

X : style 칼럼을 제외한 항목들

y : style 칼럼의 항목들

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test=train_test_split(wines_scale.iloc[:,0:12], le, test_size=0.33, random_state=8)
#[0:12]는 0~11

 

X와 y를 출력해보겠습니다

print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

 

 

X_train : X_test = 4352 : 2145 가 거의 67:33

y_train : y_test 도 거의 67:33 인 것을 알 수 있습니다.

 

 

세 가지 모델을 이용했습니다.

* DecisionTreeClassifier

* RandomForestClassifier

* LogisticRegression

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 결정트리, Random Forest, 로지스틱 회귀를 위한 사이킷런 Classifier 클래스 생성
dt_clf = DecisionTreeClassifier(random_state=11)
rf_clf = RandomForestClassifier(random_state=11)
lr_clf = LogisticRegression()

# DecisionTreeClassifier 학습/예측/평가
dt_clf.fit(X_train , y_train)
dt_pred = dt_clf.predict(X_test)
print('DecisionTreeClassifier 정확도: {0:.4f}'.format(accuracy_score(y_test, dt_pred)))

# RandomForestClassifier 학습/예측/평가
rf_clf.fit(X_train , y_train)
rf_pred = rf_clf.predict(X_test)
print('RandomForestClassifier 정확도:{0:.4f}'.format(accuracy_score(y_test, rf_pred)))

# LogisticRegression 학습/예측/평가
lr_clf.fit(X_train , y_train)
lr_pred = lr_clf.predict(X_test)
print('LogisticRegression 정확도: {0:.4f}'.format(accuracy_score(y_test, lr_pred)))

 

 

모델별로 정확도가 아주 높게 나오는 것을 알 수 있습니다.

 

 

[임의의 값으로 테스트]

 

기존 데이터 베이스에 없는 임의의 red wine 값을 넣었습니다.

my_wine = [[7.9,0.6,0.06,1.6,0.069,15,59,0.9964,3.3,0.46,9.4,5]]

 

예측한 값을 my_pred에 넣습니다. (rf_clf 모델이용)

my_pred = rf_clf.predict(my_wine)
my_pred

 

 

결과가 red로 잘 나오는 것을 확인할 수 있습니다 :)

 

 

* 이용 데이터

 

wine_dataset.csv
0.37MB

 

 

* 추가 테스트 해보고 싶을때

 

winequality-red.csv
0.08MB
winequality-white.csv
0.25MB

 

반응형
Posted by mminky
파이썬2020. 11. 14. 12:21
728x90

pip를 이용해서 쉽게 설치가 가능합니다

 

numpy 설치

pip install numpy

 

pandas 설치

pip install pandas

 

반응형
Posted by mminky
파이썬2020. 2. 4. 16:41
728x90

파이썬의 기본 자료형은 int, string, float입니다.

그 중 string 즉, 문자열과 관련된 명령어에 대해 알아보겠습니다.

 

파이썬은 문자를 선언할 때, int a이런식으로 하지 않아도 돼서 좋더라구요!

mystring = 'hello world'라고 입력하면 자동으로 mystring의 타입은 string으로 지정됩니다.

 

1) len()

  : 문자열의 길이 구하기

위와 같이 입력하면 결과창에 11이 나타나는 것을 알 수 있습니다.

공백을 포함해서 h,e,l,l,o, ,w,o,r,l,d 총 11자가 맞죠?

 

2) .split()

  : 문자열 나누기

split함수는 괄호 안에있는 문자를 기준으로 문자열을 나눕니다.

그리고 리스트로 반환하기 때문에 [0], [1], [2] 등 인덱스를 이용할 수 있습니다.

('리스트'는 나중에 배울 것이기 때문에 그냥 그렇구나~하고 넘어가시면 됩니다!)

 

공백을 기준으로 문자열을 나누려면 split(' ')을 이용하면 됩니다.

hello world를 공백을 기준으로 나누면 hello와 world겠죠?

따라서 출력을 해보면 다음과 같습니다.

 

3) +

  : 문자열 병합

파이썬에서는 간단히 '+' 기호로 문자열을 병합할 수 있습니다.

이렇게 a + 공백 + b를 하면 hello world가 출력되는 것을 알 수 있습니다.

 

4) join()

  : 리스트의 문자열 병합

괄호 내의 문자를 넣어서 리스트의 모든 문자열을 병합합니다.

mylist라는 리스트에 First, Second, Third가 있습니다.

순서대로 "공백", "<>", "/"를 기준으로 병합했습니다.

join 결과창

위와 같이 문자열 사이에 지정한 문자(공백, <>, /)가 들어간 것을 확인 할 수 있습니다.

 

5) 문자열[ 시작 : 끝 ]

  : 슬라이싱 연산자

문자열 index

문자열의 인덱스를 위와 같이 생각하면 이해하기 쉬울 것입니다.

 

예를 들어 mystr[1]을 하면 1이 시작되는 위치인 e가 나오는 것을 알 수 있습니다.

 

여러 문자를 출력하고 싶다면 mystr[1:4]와 같이 범위를 지정해주면 됩니다.

1부터 4까지

1부터 4까지 하면 e,l,l이 선택됩니다. 따라서 결과창에는 ell이 나오게 되겠죠?

만약 4번부터 끝까지 출력하고 싶다면 mystr[4:]를,

처음부터 4번까지 출력하고 싶다면 mystr[:4]를 하면 됩니다.

이때,  : index 0으로 생각하면 이해하기 쉬울 것입니다.

mystr[:4]는 0~4로 생각하면 쉽습니다.

따라서 결과는 hell이 되겠죠?

 

mystr[4:]는 4~끝 으로 생각하면 쉽습니다.

따라서 o world가 출력됩니다.

실제 결과창은 다음과 같습니다.

 

오른쪽부터 읽어오고 싶다면 음수 인덱스를 이용하면 됩니다.

예를 들어 mystr[-3]을 해보겠습니다.

따라서 r이 출력됩니다.

 

음수 인덱스 역시 mystr[-2:], mystr[:-2] 이렇게 이용 가능합니다.

mystr[-2:]는 -2 ~ 0을 의미합니다.

따라서 ld가 출력됩니다.

 

mystr[:-2]는 0 ~ -2를 의미합니다.

따라서 hello wor가 출력됩니다.

 

------------------------------------------------------------------------------------------------------------------------------

 

아래 사이트에 연습문제와 설명이 잘 나와있으니 참고하시는 것도 좋을 듯 합니다!

다들 파이팅!!

https://wikidocs.net/2843

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

문의사항이나 수정사항 있으면 댓글 부탁드립니다:)

반응형
Posted by mminky