001
오늘의 코드카타
47. 문자열 내 마음대로 정렬하기
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
제한사항
- strings는 길이 1 이상, 50이하인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.
더보기
def solution(strings, n):
strings.sort()
s = []
answer = []
for i in range(len(strings)):
s.append((strings[i][n], strings[i]))
# 리스트에 튜플 형태로 알파벳, 해당 문자열을 넣어줌
s.sort()
for j in range(len(s)):
answer.append(s[j][1])
# 리스트에 튜플의 두 번째 요소인 문자열을 넣어줌
return answer
002
오늘 학습한 내용
[ 통계 & 머신러닝 개인 과제 ]
풀면서 처음부터 복습하는 느낌으로 정리 (내일까지 제출인데 이제야 풀기 시작했다....😅)
1. 가설검정
1) 독립표본 T-검정
- 집단이 2개(정상/고장)이고, 비교할 특성이 연속형 숫자일 때 씀
- 각 특성별로 t-검정 돌려서 정상/고장 그룹 간 평균 차이가 통계적으로 유의미한지 확인하기
(과제에 작성한 코드 일부 가져옴)
# 정상(Normal)과 고장(Failure) 그룹의 평균 차이 검정
t_stat, p_val = stats.ttest_ind(Normal[feat], Failure[feat])
print(f"[{feat}] t-score: {t_stat:.6f}, p-value: {p_val:.6f}")
- p-value : 이 차이가 우연히 생겼을 확률, 0.05보다 작으면 우연 X, 두 집단이 진짜로 다르다는 뜻
- t-score : 두 집단의 평균이 얼마나 멀리 떨어져 있는지 보여주는 지표, 절대값이 클수록 고장 여부를 가르는 파워가 강한 변수
2) 카이제곱 검정 (Chi-square Test)
- 비교할 두 변수가 모두 범주형(ex. 제품 등급 L/M/H vs 고장 여부 0/1)일 때 사용
# 교차표
contingency_table = pd.crosstab(df['Type'], df['machine_failure'])
# 카이제곱 검정 (통계량, p값, 자유도)
chi2, p, dof, expected = chi2_contingency(contingency_table)
2. 상관관계 분석
1) 피어슨 상관계수 + 히트맵
- 두 연속형 변수의 상관관계 확인
corr_matrix = df[features].corr()
# 히트맵 시각화
sns.heatmap(corr_matrix, annot=True, fmt='.2f', cmap='coolwarm', center=0)
plt.show()
2) T-test와 상관관계의 연결고리
- T-test의 t-score 순위랑 상관계수 순위가 일치
- 분석 방법은 달라도 결국 고장에 미치는 영향력이 큰 변수를 찾는다는 목적은 같음 !
3. 머신러닝 - 선형 회귀분석
이건 나중에 봐도 이해하기 쉽게 예시 코드 새롭게 만들고
주석에 설명 줄줄이 달아놨다...
import pandas as pd
from sklearn.linear_model import LinearRegression
# 1. 가상의 예시 데이터 생성 (공부 시간에 따른 시험 점수 예측)
data = {
'study_hours': [2, 4, 6, 8, 10],
'exam_score': [40, 55, 70, 85, 95]
}
df = pd.DataFrame(data)
# 2. 독립변수(X)와 종속변수(Y) 설정
# ★ scikit-learn에서 독립변수 X는 대괄호 두 개[[ ]]를 사용!
X = df[['study_hours']]
y = df['exam_score']
# 3. 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)
# 4. 모델 평가를 위한 평가지표 및 회귀계수 추출
r2 = model.score(X, y) # 결정계수 (R²): 모델의 설명력을 나타냄 (1에 가까울수록 완벽)
slope = model.coef_[0] # 회귀계수/기울기 (Slope): X가 1단위 증가할 때 Y의 변화량
intercept = model.intercept_ # y절편 (Intercept): X가 0일 때의 기본 Y값
# 5. 학습된 모델 기반으로 새로운 데이터 예측하기
# ★ 예측할 때도 학습할 때와 동일하게 2차원 데이터프레임 형태로 넣어주기
new_data = pd.DataFrame([[7]], columns=['study_hours']) # 7시간 공부했을 때
predicted_score = model.predict(new_data)[0]
# 6. 결과 출력
print(f"1. 모델 결정계수 (R²): {r2:.4f}")
print(f"2. 도출된 회귀식: Y = {slope:.2f} * X + {intercept:.2f}")
print(f"3. 예측 결과 (7시간 공부 시 예상 점수): {predicted_score:.2f}점")

길게 할 말 없다.
정신 🍒자
'Today I Learned' 카테고리의 다른 글
| [내일배움캠프 QA/QC 6기] TIL #038 (0) | 2026.07.03 |
|---|---|
| [내일배움캠프 QA/QC 6기] TIL #037 (0) | 2026.07.02 |
| [내일배움캠프 QA/QC 6기] TIL #035 (0) | 2026.06.30 |
| [내일배움캠프 QA/QC 6기] TIL #034 (0) | 2026.06.29 |
| [내일배움캠프 QA/QC 6기] TIL #033 (0) | 2026.06.26 |