문제1

  1. 결정계수 R^2은 예측이 타깃의 평균정도로 예측할 때 1에 가까운 값이 된다. 또한, 결정계수(R^2)은 대표적인 회귀 문제의 성능 측정 도구로써, 1에 가까울수록 성능이 좋은 모델이다. 정답 : X 결정계수 R^2은 예측이 타깃의 평균정도로 예측할 때 0에 가까운 값이 된다.

2.multiple-regression은 독립변수가 두개이상 으로써, O 이러한 여러 특성들을 조합하는 것을 특성공학이라고 하고, O polynomial-regression은 독립변수가 하나를 가지고 있으며, O polynomial-regression은 multiple-regression의 일종이라고 할 수 있다.O 정답 : O 3. 다음 그래프는 집값을 선형 회귀로 표현한 그래프이다.

왼쪽에서부터 순서대로 그래프 1, 2, 3이라고 할 때, 그래프 1 - Underfitting, O 그래프 2 - Overfitting, X 그래프 3 - Appropriate fitting X 이라고 할 수 있다. 정답 : X , 1 - Underfitting 2 -Appropriate fitting 3 - Overfitting

4.규제는 언더피팅과 오버피팅을 방지할 수 있다.

정답 : X 오버피팅만 방지 가능하다

5.사이킷런의 변환기에서는 훈련(fit)과 변환(transform)의 순서는 중요하지 않다. 정답 : X , fit 먼저 해야한다.

6.선형회귀로 풀 수 있는 문제는 O, 풀 수 없는 문제는 X 표시해주세요.

  1. 침실 수, 위치 등의 특징을 바탕으로 주택 가격 예측 O
  2. 기업의 광고비 지출과 매출액과의 관계 파악 O
  3. 직원의 직무만족에 기여하는 요인의 파악 X
  4. 구매 내역을 기준으로 고객이 동요할 가능성 예측 O
  5. 픽셀 값을 기준으로 이미지를 다른 범주로 분류 X

문제2

  1. print(list1)과 print(array1) 한 값은 일치한다. 정답 : X , [1, 2, 3, 4, 5] / [1 2 3 4 5]
  2. array1 의 크기를 (5, 1) 이라고 표현한다. 정답 : X , 1차원 배열이다. (5,)
  3. 사이킷 런의 train set로 적합한 형태는 array2이다. 정답 : O
  4. array3 = array1.reshape(1,5) 를 한다면 array1의 크기도 변경된다. 정답 : X

문제3

Google Colaboratory

문제4,5

from google.colab import drive
import pandas as pd
import numpy as np
drive.mount('/content/drive')
data_path = './Fish.csv'
df = pd.read_csv(data_path)
df
#[4-1]
## data에 'Length1','Length2','Length3','Height','Width' 정보를 추출
fish_data= df[['Length1', 'Length2','Length3','Height','Width']]
## target으로 weight을 추출.
fish_weight= df[['Weight']]
#[4-2]
from sklearn.model_selection import  train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
train_input,test_input,train_target,test_target=train_test_split(fish_data,fish_weight,random_state=42)
##degree1,2,3중 가장 훈련세트에 대해서 점수가 높은 degree를 구해서 훈련시키고 점수를 구하는 코드를 완성!
#(include_bias=False를 포함 시켜야함)  -> for문을 돌려야한다
print(train_target, train_target)
poly= PolynomialFeatures(include_bias=False) #for 첨부해서 다시풀기
poly.fit(train_input)
train_poly=poly.transform(train_input)
test_poly=poly.transform(test_input)
lr=LinearRegression()
lr.fit(train_poly,train_target)
print(lr.score(train_poly,train_target))
print(lr.score(test_poly,test_target))
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
import matplotlib.pyplot as plt
###degree 5일 때는 테스트 세트 점수가 음수임.->이 때의 문제점을 릿지 회귀로 해결.
poly=PolynomialFeatures(degree=5,include_bias=False)
poly.fit(train_input)
train_poly=poly.transform(train_input)
test_poly=poly.transform(test_input)
###정규화를 먼저 진행.
ss=StandardScaler()
ss.fit(train_poly)
train_scaled=ss.transform(train_poly)
test_scaled=ss.transform(test_poly)
ridge=Ridge()
ridge.fit(train_scaled,train_target)
print(ridge.score(train_scaled,train_target))
print(ridge.score(test_scaled,test_target))
train_score=[]
test_score=[]
##가장 최적화된 alpha계수를 구하고, 이 계수를 적용하여, 점수를 출력.
alpha_list=[0.0001,0.001,0.01,0.1,1,10,100,1000]
for alpha in alpha_list:
  ridge=Ridge(alpha)
  ridge.fit(train_scaled,train_target)
  train_score.append(ridge.score(train_scaled,train_target))
  test_score.append(ridge.score(test_scaled,test_target))
plt.plot(np.log10(alpha_list),train_score)
plt.plot(np.log10(alpha_list),test_score)
plt.xlabel('alpha')
plt.ylabel('R**2')
plt.show()
ridge=Ridge(alpha=0.01)
ridge.fit(train_scaled,train_target)
print(ridge.score(train_scaled,train_target))
print(ridge.score(test_scaled,test_target))

Untitled