[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
1940년대 | 인공적인 두뇌의 가능성 -> 뇌(뉴런)을 모방해 간단한 연산 모델 구성 |
---|---|
1950년대 | 황금기로 인공지능 학문이 탄생했으며 넓은 의미의 AI가 탄생했다. |
1970년대 | 너무너무 복잡해서 잘 안되었던 시기 |
1980년대 | 비즈니스에 적용 실패 |
현재 | 제프리 힌튼 교수의 딥러닝으로 두 번째 황금기를 맞이했다. XOR 문제를 해결 |
XOR : x와 y의 값이 다르다면 1, 같다면 0
input x - > function -> output y
training data (x, y) + Learning = Model(가설)
테스트 데이터 X 투입 -> Model(가설)에 적용 -> Y출력
머신러닝은 컴퓨터가 가중치(Weight)를 찾아가는 과정
가상환경 생성
conda create -n ai01 python=3.9
파이참 프로젝트 생성 후 만든 가상환경으로 세팅
01_sklearn
디렉토리 생성
하위에 파이썬 파일 생성
함수를 만들고 실행해보자
def f(x):
return list(map(lambda i: 2 * i, x))
x = [1,2,3,4,5]
y = f(x)
print(y)
matplotlib 설치
pip install matplotlib
모듈 호출
import matplotlib.pyplot as plt
화면에 출력
plt.plot(x,y)
plt.show()
머신러닝 실습할 파이썬 파일 생성
머신러닝 시 사용하는 라이브러리
scikit learn 라이브러리 설치
pip install sklearn
모듈 호출
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt
내용 작성
# 배열 생성
x = np.array([1,2,3,4,5])
y = np.array([2,4,6,8,10])
# 머신러닝 객체 생성
linear = LinearRegression()
# [1,2,3,4,5] -> [[1],[2],[3],[4],[5]] (세로형태)로 리쉐잎
print(x.reshape(-1, 1))
linear.fit(x.reshape(-1,1), y)
test_x = np.array([6,7,8,9,10])
predict = linear.predict(test_x.reshape(-1,1))
print(predict)
plt.plot(test_x, predict)
plt.show()
결과
[[1]
[2]
[3]
[4]
[5]]
[12. 14. 16. 18. 20.]
soldiers.csv
로 이름 변경 후 파이썬 파일과 같은 경로에 저장몸무게와 키(신장)의 상관관계가 있는지 알아보려고 한다.
Pandas 패키지 설치
pip install pandas
모듈 호출
import pandas as pd
# 컬럼 네임들을 미리 리스트로 만들어 놓음
names = ['순번', 'date', '가슴둘레', '소매길이', 'height', '허리둘레', '살높이', '머리둘레', '발길이', 'weight']
# csv데이터를 불러옴
df = pd.read_csv('soldiers.csv', encoding='euc-kr', names=names, header=0, low_memory=False)
# 해당 컬럼만 가져와 다시 데이터프레임을 생성
df = df[['date','height','weight']]
print(len(df)) # 167983
# 결측치제거 : dropna
#inplace=True는 df에 dropna가 적용된 것을 원본으로 바꿔버릴 때 사용
df.dropna(inplace=True)
print(len(df)) # 167983, 결측치가 없나 봄
년도만 남기기
date height weight
0 20140106 185.500 73.200
1 2013 167.200 65.100
2 20140106 179.900 93.200
3 2013 171.400 71.600
4 20140106 176.900 67.100
년도를 확인하면 4자리로 되있는 것을 확인할 수 있고, 년도만 있는 것과 월일도 포함 된 것이 있기 때문에 년도만 남겨서 값들에 적용해야한다.
df['date'] = list(map(lambda x: int(str(x)[:4]) if len(str(x)) > 4 else x , df['date']))
print(df)
date height weight
0 2014 185.500 73.200
1 2013 167.200 65.100
2 2014 179.900 93.200
3 2013 171.400 71.600
4 2014 176.900 67.100
... ... ... ...
height 이쁘게 정리
소수점 이하 첫 째 자리까지 줄이고 cm가 있는 부분도 지워주자.
df['height'] = list(map(lambda x: float(str(x)[:5]) if len(str(x)) > 5 else x , df['height'] ))
print(df)
date height weight
0 2014 185.5 73.200
1 2013 167.2 65.100
2 2014 179.9 93.200
3 2013 171.4 71.600
4 2014 176.9 67.100
... ... ... ...
몸무게 이쁘게 정리
float 형을 바꾸고 kg도 제거
df['weight'] = list(map(lambda x: str(x).split(' ')[0], df['weight']))
이렇게 하면 빈 문자열이 있는 셀들이 존재한다. 따라서 다른 람다함수를 적용
# 아예 공백이 있는 곳들은 None으로 적용시키고, 값이 있다면 float형으로
df['weight'] = list(map(lambda x: float(x) if x else None, df['weight']))
그리고 결측치 제거 후 길이 확인
df.dropna(inplace=True)
print(len(df))
167957
무게와 신장 데이터 변수에 저장
X = df['weight']
y = df['height']
트레이닝 세트와 테스트 세트를 분리해야 함
모듈 호출
from sklearn.model_selection import train_test_split
분할
# random_state는 randomseed같은 것
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=1)
train_X = train_X.values.reshape(-1,1)
test_X = test_X.values.reshape(-1,1)
print(train_X)
84094 74.0
70451 84.0
43745 58.7
55139 90.2
160473 69.8
...
73349 77.5
모듈 호출
from sklearn.linear_model import LinearRegression
선형 모델 생성
linear = LinearRegression()
linear.fit()
으로 트레인 세트 데이터들을 학습
linear.fit(train_X, train_y)
# 모델 학습 정도를 확인하기 위해 예측 확인
predict = linear.predict(test_X)
print(test_X)
print(predict)
[[100.7]
[ 59.7]
[ 80.5]
...
[ 68.8]
[ 64.2]
[ 68.3]]
[179.28084643 172.68043159 176.02893473 ... 174.14540171 173.40486737
174.06490885]
모듈 호출
import matplotlib.pyplot as plt
코드 작성
plt.plot(test_X, test_y, 'b.')
plt.plot(test_X, predict, 'r.')
plt.xlim(20, 150)
plt.ylim(150, 220)
plt.grid()
plt.show()
그래프 확인
실습1과 같은 데이터로
몸무게와 키로 년도와 상관관계가 있는지 확인해보자
2013년을 0, 2014년을 1 … 2017년을 4로 바꿔 데이터프레임의 새로운 컬럼 date_new
에 넣어준다.
df['date_new'] = list(map(lambda x: 0 if x == 2013 else 1 if x == 2014 else 2 if x == 2015 else 3 if x == 2016 else 4, df['date']))
새로운 컬럼date_new
를 X
에 적용
X = df[['weight', 'date_new']]
y = df['height']
실습1과 동일하게 출력만 다르게
70키로에 2017년
print(linear.predict([[70, 4]]))
실습 2에서 그대로 복사해 py 파일 생성
모듈 호출
from sklearn.preprocessing import PolynomialFeatures
모듈 호출
import numpy as np
다항회귀 (PolynormialFeatures) : 특성이 두 개. 특성을 곱해서 다차원으로 바꾸는 것
다항회귀 모델 생성
poly = PolynomialFeatures()
모델을 사용해 X 변경
X = poly.fit(X).transform(X)
기존과 같으나 해당 부분 주석처리
# train_X = train_X.values.reshape(-1,1)
# test_X = test_X.values.reshape(-1,1)
예측값을 다항회귀에 맞게 변경해서 넣어야한다.
print(linear.predict(poly.fit(np.array([[70,0]])).transform(np.array([[70,0]]))))
결과
[174.91721837]
새 파이썬파일 생성
weight_height.csv
으로 .py파일과 동일 경로에 위치데이터프레임 생성 후 확인
df = pd.read_csv('weight_height.csv', encoding='euc-kr')
ID 최종가중치 학교ID 도시규모 도시규모별분석용 학년도 광역시도 시도별 ... 혈당식전mgdl 총콜레스테롤mgdl ASTUL ALTUL 혈색소gdl 간염검사 수축기 이완기
0 Aa011남10101 169.550665 Aa01 대도시/중소도시 특별/광역시 2015 서울 서울특별시교육청 ... NaN NaN NaN NaN NaN
NaN 77.0 58.0
1 Aa011남10102 169.550665 Aa01 대도시/중소도시 특별/광역시 2015 서울 서울특별시교육청 ... NaN NaN NaN NaN NaN
NaN 83.0 51.0
컬럼 목록 확인
ID 최종가중치 학교ID 도시규모 도시규모별분석용 학년도 광역시도 시도별 ... 혈당식전mgdl 총콜레스테롤mgdl ASTUL ALTUL 혈색소gdl 간염검사 수축기 이완기
학교명, 학년, 성별, 키, 몸무게 컬럼만 가져온 후 확인
df = df[['학교명','학년','성별','키','몸무게']]
학교명 학년 성별 키 몸무게
0 서울대도초등학교 1 남 125.8 27.3
1 서울대도초등학교 1 남 124.3 25.4
2 서울대도초등학교 1 남 119.2 23.5
3 서울대도초등학교 1 남 115.0 20.0
4 서울대도초등학교 1 남 120.0 33.5
... ... .. .. ... ...
결측치 제거하고 개수 확인
print(len(df))
df.dropna(inplace=True)
print(len(df))
9686
9682
데이터 프레임에 grade
컬럼 만들어 주기
조건
작성 후 확인
df['grade'] = list(map(lambda x: 0 if x[-4:] == '초등학교' else 6 if x[-3:] == '중학교' else 9, df['학교명'])) + df['학년']
학교명 학년 성별 키 몸무게 grade
0 서울대도초등학교 1 남 125.8 27.3 1
1 서울대도초등학교 1 남 124.3 25.4 1
2 서울대도초등학교 1 남 119.2 23.5 1
3 서울대도초등학교 1 남 115.0 20.0 1
4 서울대도초등학교 1 남 120.0 33.5 1
... ... .. .. ... ... ...
9681 세종과학고등학교 3 남 176.1 50.4 12
9682 세종과학고등학교 3 남 174.1 88.8 12
9683 세종과학고등학교 3 남 169.5 63.2 12
9684 세종과학고등학교 3 여 159.2 52.9 12
9685 세종과학고등학교 3 여 162.0 67.7 12
grade
컬럼을 생성했으니 학교명
과 학년
컬럼을 날려주고 확인
df.drop(['학교명','학년'], axis='columns', inplace=True)
print(df)
성별 키 몸무게 grade
0 남 125.8 27.3 1
1 남 124.3 25.4 1
2 남 119.2 23.5 1
3 남 115.0 20.0 1
4 남 120.0 33.5 1
... .. ... ... ...
9681 남 176.1 50.4 12
컬럼을 영문으로 변경
df.columns = ['gender', 'height', 'weight','grade']
gender
가 남자면 0, 여자면 1로 변경
df['gender'] = list(map(lambda x: 0 if x == '남' else 1, df['gender']))
남자 여자 데이터프레임으로 나누기
조건 만들기 : 0이라면(남자라면) is_boy
is_boy = df['gender'] == 0
not(~) 사용
boy_df, girl_df = df[is_boy], df[~is_boy]
남성의 키와 몸무게 변수로 저장
X = boy_df['weight']
y = boy_df['height']
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝/테스트 셋으로 분할
# 테스트 사이즈는 0.3, random_state 1로 고정
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=1)
형태 변환
train_X = train_X.values.reshape(-1, 1)
test_X = test_X.values.reshape(-1, 1)
모듈 호출
from sklearn.linear_model import LinearRegression
모델 생성
linear = LinearRegression()
모델을 사용해 학습 :.fit()
linear.fit(train_X, train_y)
.predict
()로 예측
predict = linear.predict(test_X)
print(predict)
[148.4105717 159.22580237 147.91521762 ... 166.16075945 163.02351696
168.05961674]
plt.plot(test_X, test_y, 'b.')
plt.plot(test_X, predict, 'r.')
plt.xlim(10, 140)
plt.ylim(100, 220)
plt.show()
모듈 호출
from sklearn.preprocessing import PolynomialFeatures
변수 바꿔주기
X = df['weight','gender']
y = df['height']
폴리노미알 모델 생성
poly = PolynomialFeatures()
X = poly.fit(X).transform(X)
동일하나 reshape 한거 주석처리
# train_X = train_X.values.reshape(-1, 1)
# test_X = test_X.values.reshape(-1, 1)
.score
로 평가
accuracy = linear.score(test_X, test_y)
print('acc:', accuracy)
acc: 0.8322697807454456
plt.plot(test_X, test_y, 'b.')
plt.plot(test_X, predict, 'r.')
plt.xlim(10, 140)
plt.ylim(100, 220)
plt.show()
섭씨에도 화씨로 온도 변경
함수 작성
import numpy as np
def celsius_to_fahrenheit(x):
return 9.0/ 5 * x + 32
data_C = np.array(range(0, 100))
data_F = celsius_to_fahrenheit(data_C)
inp = int(input('섭씨 온도를 입력해 주세요 : '))
print(inp, '는 화씨',celsius_to_fahrenheit(inp), '입니다.')
결과
섭씨 온도를 입력해 주세요 : 8
8 는 화씨 46.4 입니다.
이 과정을 컴퓨터에게 학습시켜보자.
X = data_C
y = data_F
모듈 호출
from sklearn.model_selection import train_test_split
테스트 사이즈 30%, 랜덤스테이츠 1로 고정
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=1)
train_X = train_X.reshape(-1, 1)
test_X = test_X.reshape(-1, 1)
모듈 호출
from sklearn.linear_model import LinearRegression
모델 생성
linear = LinearRegression()
linear.fit(train_X, train_y)
predict= linear.predict(test_X)
pred_f = linear.predict([[30]])
print('30 to fahrenheit', pred_f)
30 to fahrenheit [86.]
accuracy = linear.score(test_X, test_y)
print(accuracy)
1.0
공부시간과 과외시간 형태로 배열을 만들어 준다.
X - 예 : 1시간 공부하고 0시간 과외하면 [1,0], 8시간 공부하고 1시간 과외하면 [8,1]
y - 만약, 시험에 떨어졌다면 [0], 붙었다면 [1]
X = [
[1, 0],
[2, 0],
[5, 1],
[2, 3],
[3, 3],
[8, 1],
[10, 0]
]
y = [
[0],
[1],
[0],
[0],
[1],
[1],
[1]
]
모듈 호출
from sklearn.model_selection import train_test_split
training, test 데이터 분할
train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3, random_state=1)
모듈 호출
from sklearn.linear_model import LogisticRegression
분류 모델 생성
logistic = LogisticRegression()
모듈 호출
import numpy as np
학습
logistic.fit(train_X, np.ravel(train_y))
np.ravel()
은 무슨 기능을 하나?다차원 배열을 1차원으로 바꾸는 기능을 한다. 예를 들어, a = [[1,2],[3,4]]
라는 배열이 있을 때 np.ravel(a)
를 해주면 [1,2,3,4]
의 형태로 바뀐다. 기존 a값의 원소가 바뀌면 ravel한 배열의 원소도 바뀐다는 점을 명심(얕은복사)하자!
pred = logistic.predict(test_X)
for i in range(len(test_X)):
print('{} 시간 공부 {} 시간 과외 : {}'.format(test_X[i][0], test_X[i][1], 'pass' if pred[i] == 1 else 'fail'))
print('acc :', logistic.score(test_X, test_y))
10 시간 공부 0 시간 과외 : pass
5 시간 공부 1 시간 과외 : pass
2 시간 공부 0 시간 과외 : fail
acc : 0.3333333333333333
form sklearn.datasets import load_데이터셋명
모듈 호출
from sklearn.datasets import load_iris
데이터셋 저장
iris = load_iris()
feature명 확인
print(iris.feature_names)
['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
target명 확인(꽃 세부 종류들)
print(iris.target_names)
['setosa' 'versicolor' 'virginica']
변수 설정
X = iris.data
y = iris.target
데이터프레임 생성
df = pd.DataFrame(X)
df.columns= ['sepal length', 'sepal_width', 'petal_length', 'petal_width']
df['category'] = pd.DataFrame(iris.target_names[y].reshape(-1))
print(df)
sepal length sepal_width petal_length petal_width category
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
.. ... ... ... ... ...
145 6.7 3.0 5.2 2.3 virginica
146 6.3 2.5 5.0 1.9 virginica
147 6.5 3.0 5.2 2.0 virginica
148 6.2 3.4 5.4 2.3 virginica
149 5.9 3.0 5.1 1.8 virginica
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝/테스트 세트로 분할
train_X, test_X, train_y, test_y = train_test_split(X,y, test_size=0.3, random_state=1)
종을 분류할 것이기 때문에 LogisticRegression 활용
모듈 호출
from sklearn.linear_model import LogisticRegression
모델 생성
logistic = LogisticRegression()
logistic.fit(train_X, train_y)
pred = logistic.predict(test_X)
for i in range(len(test_X)):
print(f'{test_X[i]} 예측 : {iris.target_names[pred[i]]} / 실제 : {iris.target_names[test_y[i]]}')
[5.8 4. 1.2 0.2] 예측 : setosa / 실제 : setosa
[5.1 2.5 3. 1.1] 예측 : versicolor / 실제 : versicolor
[6.6 3. 4.4 1.4] 예측 : versicolor / 실제 : versicolor
[5.4 3.9 1.3 0.4] 예측 : setosa / 실제 : setosa
[7.9 3.8 6.4 2. ] 예측 : virginica / 실제 : virginica
[6.3 3.3 4.7 1.6] 예측 : versicolor / 실제 : versicolor
[6.9 3.1 5.1 2.3] 예측 : virginica / 실제 : virginica
[5.1 3.8 1.9 0.4] 예측 : setosa / 실제 : setosa
[4.7 3.2 1.6 0.2] 예측 : setosa / 실제 : setosa
[6.9 3.2 5.7 2.3] 예측 : virginica / 실제 : virginica
....
...
...
print(f'acc : {logistic.score(test_X, test_y)}')
acc : 0.9777777777777777
모듈 호출
from sklearn.datasets import load_iris
iris 데이터 불러와 데이터 지정
iris = load_iris()
X = iris.data
y = iris.target
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝, 테스트 세트 분할
train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3,random_state=1)
모듈 호출
from sklearn.neighbors import KNeighborsClassifier
모델 생성
model = KNeighborsClassifier()
model.fit(train_X, train_y)
pred = model.predict(test_X)
for i in range(len(test_X)):
print(f'{test_X[i]} 예측 : {iris.target_names[pred[i]]} / 실제 : {iris.target_names[test_y[i]]}')
...
...
...
...
[6.3 2.9 5.6 1.8] 예측 : virginica / 실제 : virginica
[6.6 2.9 4.6 1.3] 예측 : versicolor / 실제 : versicolor
print(f'acc : {model.score(test_X, test_y)}')
acc : 0.9777777777777777
모듈 호출
from sklearn.datasets import load_iris
데이터 준비
iris = load_iris()
X = iris.data
y = iris.target
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝/테스트 세트 분할
train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.3, random_state=1)
모듈 호출
from sklearn.svm import SVC
SVM 모델 생성
model = SVC(kernel='linear')
model.fit(train_X, train_y)
pred = model.predict(test_X)
print(test_X)
print(pred)
[[5.8 4. 1.2 0.2]
[5.1 2.5 3. 1.1]
[6.6 3. 4.4 1.4]
[5.4 3.9 1.3 0.4]
[7.9 3.8 6.4 2. ]
[6.3 3.3 4.7 1.6]
[6.9 3.1 5.1 2.3]
[5.1 3.8 1.9 0.4]
[4.7 3.2 1.6 0.2]
[6.9 3.2 5.7 2.3]
[5.6 2.7 4.2 1.3]
[5.4 3.9 1.7 0.4]
[7.1 3. 5.9 2.1]
[6.4 3.2 4.5 1.5]
[6. 2.9 4.5 1.5]
[4.4 3.2 1.3 0.2]
[5.8 2.6 4. 1.2]
[5.6 3. 4.5 1.5]
[5.4 3.4 1.5 0.4]
[5. 3.2 1.2 0.2]
[5.5 2.6 4.4 1.2]
[5.4 3. 4.5 1.5]
[6.7 3. 5. 1.7]
[5. 3.5 1.3 0.3]
[7.2 3.2 6. 1.8]
[5.7 2.8 4.1 1.3]
[5.5 4.2 1.4 0.2]
[5.1 3.8 1.5 0.3]
[6.1 2.8 4.7 1.2]
[6.3 2.5 5. 1.9]
[6.1 3. 4.6 1.4]
[7.7 3. 6.1 2.3]
[5.6 2.5 3.9 1.1]
[6.4 2.8 5.6 2.1]
[5.8 2.8 5.1 2.4]
[5.3 3.7 1.5 0.2]
[5.5 2.3 4. 1.3]
[5.2 3.4 1.4 0.2]
[6.5 2.8 4.6 1.5]
[6.7 2.5 5.8 1.8]
[6.8 3. 5.5 2.1]
[5.1 3.5 1.4 0.3]
[6. 2.2 5. 1.5]
[6.3 2.9 5.6 1.8]
[6.6 2.9 4.6 1.3]]
[0 1 1 0 2 1 2 0 0 2 1 0 2 1 1 0 1 1 0 0 1 1 1 0 2 1 0 0 1 2 1 2 1 2 2 0 1
0 1 2 2 0 2 2 1]
print(model.score(test_X, test_y))
1.0
모듈 호출
from sklearn.datasets import load_iris
데이터 준비
iris = load_iris()
X = iris.data
y = iris.target
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝 테스트 데이터 분할
train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3, random_state=1)
모듈 호출
from sklearn.tree import DecisionTreeClassifier
결정트리 모델 생성
model = DecisionTreeClassifier()
model.fit(train_X, train_y)
pred = model.predict(test_X)
for i in range(len(test_X)):
print(f'{test_X[i]} : {pred[i]}')
[5.8 4. 1.2 0.2] : 0
[5.1 2.5 3. 1.1] : 1
[6.6 3. 4.4 1.4] : 1
[5.4 3.9 1.3 0.4] : 0
[7.9 3.8 6.4 2. ] : 2
[6.3 3.3 4.7 1.6] : 1
[6.9 3.1 5.1 2.3] : 2
[5.1 3.8 1.9 0.4] : 0
[4.7 3.2 1.6 0.2] : 0
[6.9 3.2 5.7 2.3] : 2
[5.6 2.7 4.2 1.3] : 1
[5.4 3.9 1.7 0.4] : 0
[7.1 3. 5.9 2.1] : 2
[6.4 3.2 4.5 1.5] : 1
[6. 2.9 4.5 1.5] : 1
[4.4 3.2 1.3 0.2] : 0
[5.8 2.6 4. 1.2] : 1
[5.6 3. 4.5 1.5] : 1
[5.4 3.4 1.5 0.4] : 0
[5. 3.2 1.2 0.2] : 0
[5.5 2.6 4.4 1.2] : 1
[5.4 3. 4.5 1.5] : 1
[6.7 3. 5. 1.7] : 2
[5. 3.5 1.3 0.3] : 0
[7.2 3.2 6. 1.8] : 2
[5.7 2.8 4.1 1.3] : 1
[5.5 4.2 1.4 0.2] : 0
[5.1 3.8 1.5 0.3] : 0
[6.1 2.8 4.7 1.2] : 1
[6.3 2.5 5. 1.9] : 2
[6.1 3. 4.6 1.4] : 1
[7.7 3. 6.1 2.3] : 2
[5.6 2.5 3.9 1.1] : 1
[6.4 2.8 5.6 2.1] : 2
[5.8 2.8 5.1 2.4] : 2
[5.3 3.7 1.5 0.2] : 0
[5.5 2.3 4. 1.3] : 1
[5.2 3.4 1.4 0.2] : 0
[6.5 2.8 4.6 1.5] : 1
[6.7 2.5 5.8 1.8] : 2
[6.8 3. 5.5 2.1] : 2
[5.1 3.5 1.4 0.3] : 0
[6. 2.2 5. 1.5] : 1
[6.3 2.9 5.6 1.8] : 2
[6.6 2.9 4.6 1.3] : 1
print(model.score(test_X, test_y))
0.9555555555555556
모듈 호출
from sklearn.datasets import load_iris
iris 데이터 준비
iris = load_iris()
X = iris.data
y = iris.target
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝/테스트 데이터 셋으로 분할
train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3,random_state=1)
랜덤포레스트 모듈 호출
from sklearn.ensemble import RandomForestClassifier
랜덤포레스트 모델 생성
model = RandomForestClassifier()
문제와 답을 넣어 줌
model.fit(train_X, train_y)
pred = model.predict(test_X)
print(test_X)
print(pred)
[[5.8 4. 1.2 0.2]
[5.1 2.5 3. 1.1]
[6.6 3. 4.4 1.4]
[5.4 3.9 1.3 0.4]
[7.9 3.8 6.4 2. ]
[6.3 3.3 4.7 1.6]
[6.9 3.1 5.1 2.3]
[5.1 3.8 1.9 0.4]
[4.7 3.2 1.6 0.2]
[6.9 3.2 5.7 2.3]
[5.6 2.7 4.2 1.3]
[5.4 3.9 1.7 0.4]
[7.1 3. 5.9 2.1]
[6.4 3.2 4.5 1.5]
[6. 2.9 4.5 1.5]
[4.4 3.2 1.3 0.2]
[5.8 2.6 4. 1.2]
[5.6 3. 4.5 1.5]
[5.4 3.4 1.5 0.4]
[5. 3.2 1.2 0.2]
[5.5 2.6 4.4 1.2]
[5.4 3. 4.5 1.5]
[6.7 3. 5. 1.7]
[5. 3.5 1.3 0.3]
[7.2 3.2 6. 1.8]
[5.7 2.8 4.1 1.3]
[5.5 4.2 1.4 0.2]
[5.1 3.8 1.5 0.3]
[6.1 2.8 4.7 1.2]
[6.3 2.5 5. 1.9]
[6.1 3. 4.6 1.4]
[7.7 3. 6.1 2.3]
[5.6 2.5 3.9 1.1]
[6.4 2.8 5.6 2.1]
[5.8 2.8 5.1 2.4]
[5.3 3.7 1.5 0.2]
[5.5 2.3 4. 1.3]
[5.2 3.4 1.4 0.2]
[6.5 2.8 4.6 1.5]
[6.7 2.5 5.8 1.8]
[6.8 3. 5.5 2.1]
[5.1 3.5 1.4 0.3]
[6. 2.2 5. 1.5]
[6.3 2.9 5.6 1.8]
[6.6 2.9 4.6 1.3]]
[0 1 1 0 2 1 2 0 0 2 1 0 2 1 1 0 1 1 0 0 1 1 2 0 2 1 0 0 1 2 1 2 1 2 2 0 1
0 1 2 2 0 1 2 1]
print(model.score(test_X,test_y))
0.9555555555555556
모듈 호출
from sklearn.datasets import load_iris
iris 데이터 준비
iris = load_iris()
X = iris.data
y = iris.target
모듈 호출
from sklearn.model_selection import train_test_split
트레이닝/테스트 데이터 세트 분할(테스트 사이즈는 30%, 랜덤스테이츠는 1)
train_X, test_X, train_y, test_y = train_test_split(X,y,test_size=0.3,random_state=1)
모듈 호출
from sklearn.cluster import KMeans
K-means 모델 생성
분류하고자 하는 개수가 3개이기 때문에 n_clusters=3
(setosa, verginica, vergi~)
model = KMeans(n_clusters=3)
k-mean(군집)은 중심을 알아서 찾기 때문에(비지도) 문제만 넣고 답을 넣어주지 않아도 데이터를 알아서 넣어준다.
문제(train_X
)만 학습시켜주면 된다.
model.fit(train_X)
pred = model.predict(test_X)
print(test_X)
print(pred)
[[5.8 4. 1.2 0.2]
[5.1 2.5 3. 1.1]
[6.6 3. 4.4 1.4]
[5.4 3.9 1.3 0.4]
[7.9 3.8 6.4 2. ]
[6.3 3.3 4.7 1.6]
[6.9 3.1 5.1 2.3]
[5.1 3.8 1.9 0.4]
[4.7 3.2 1.6 0.2]
[6.9 3.2 5.7 2.3]
[5.6 2.7 4.2 1.3]
[5.4 3.9 1.7 0.4]
[7.1 3. 5.9 2.1]
[6.4 3.2 4.5 1.5]
[6. 2.9 4.5 1.5]
[4.4 3.2 1.3 0.2]
[5.8 2.6 4. 1.2]
[5.6 3. 4.5 1.5]
[5.4 3.4 1.5 0.4]
[5. 3.2 1.2 0.2]
[5.5 2.6 4.4 1.2]
[5.4 3. 4.5 1.5]
[6.7 3. 5. 1.7]
[5. 3.5 1.3 0.3]
[7.2 3.2 6. 1.8]
[5.7 2.8 4.1 1.3]
[5.5 4.2 1.4 0.2]
[5.1 3.8 1.5 0.3]
[6.1 2.8 4.7 1.2]
[6.3 2.5 5. 1.9]
[6.1 3. 4.6 1.4]
[7.7 3. 6.1 2.3]
[5.6 2.5 3.9 1.1]
[6.4 2.8 5.6 2.1]
[5.8 2.8 5.1 2.4]
[5.3 3.7 1.5 0.2]
[5.5 2.3 4. 1.3]
[5.2 3.4 1.4 0.2]
[6.5 2.8 4.6 1.5]
[6.7 2.5 5.8 1.8]
[6.8 3. 5.5 2.1]
[5.1 3.5 1.4 0.3]
[6. 2.2 5. 1.5]
[6.3 2.9 5.6 1.8]
[6.6 2.9 4.6 1.3]]
[0 1 1 0 2 1 2 0 0 2 1 0 2 1 1 0 1 1 0 0 1 1 2 0 2 1 0 0 1 1 1 2 1 2 1 0 1
0 1 2 2 0 1 2 1]
df = pd.DataFrame(test_X)
df.columns = ['sepal_length','sepal_width','petal_length','petal_width']
df['category'] = pd.DataFrame(pred)
centers = pd.DataFrame(model.cluster_centers_)
centers.columns = ['sepal_length','sepal_width','petal_length','petal_width']
center_X = centers['sepal_length']
center_y = centers['sepal_width']
plt.scatter(df['sepal_length'], df['sepal_width'], c=df['category'])
plt.scatter(center_X, center_y, s=100, c='r', marker='*')
plt.show()
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!