로지스틱 회귀에서 순위 데이터 사용

사이먼 킬리

나는 이러한 개념을 배우기 위해 고군분투하고 있으므로 이것에 최대 현상금을 걸 것입니다! 로지스틱 회귀에서 일부 순위 데이터를 사용하려고합니다. 저는 기계 학습을 사용하여 웹 페이지가 "좋은"것인지 아닌지에 대한 간단한 분류기를 만들고 싶습니다. 이것은 단지 학습 연습 일 뿐이므로 좋은 결과를 기대하지는 않습니다. "프로세스"와 코딩 기술을 배우고 싶어합니다.

다음과 같이 내 데이터를 .csv에 넣었습니다.

URL WebsiteText AlexaRank GooglePageRank

내 테스트 CSV에는 다음이 있습니다.

URL WebsiteText AlexaRank GooglePageRank Label

레이블은 "좋음"(1) 또는 "나쁨"(0)을 나타내는 이진 분류입니다.

현재 웹 사이트 텍스트 만 사용하여 LR을 실행하고 있습니다. TF-IDF를 실행합니다.

도움이 필요한 두 가지 질문이 있습니다. 이 질문에 대해 최대의 현상금을 걸고 최선의 답변에 수여 할 것입니다.이 질문은 저와 다른 사람들이 배울 수 있도록 좋은 도움이 필요하기 때문입니다.

  • AlexaRank에 대한 순위 데이터를 정규화하려면 어떻게해야합니까? 나는 10,000 개의 웹 페이지를 가지고 있는데, 이것에 대한 Alexa 등급은 전부입니다. 그러나 그들은 순위가 없습니다 1-10,000. 그들은 그렇게하면서, 전체 인터넷 밖으로 순위가 http://www.google.com선정 될 수도 #1, http://www.notasite.com순위가 될 수 있습니다 #83904803289480. 내 데이터에서 가능한 최상의 결과를 얻기 위해 Scikit learn에서 이것을 어떻게 정규화합니까?
  • 이 방식으로 로지스틱 회귀를 실행하고 있습니다. 나는 이것을 잘못했다고 거의 확신합니다. 웹 사이트 텍스트에서 TF-IDF를 수행 한 다음 다른 두 개의 관련 열을 추가하고 로지스틱 회귀를 맞추려고합니다. 누군가가 내가 LR에서 올바르게 사용하고 싶은 세 개의 열을 사용하고 있는지 신속하게 확인할 수 있다면 감사하겠습니다. 나 자신을 개선 할 수있는 방법에 대한 모든 피드백도 여기에서 감사하겠습니다.

    loadData = lambda f: np.genfromtxt(open(f,'r'), delimiter=' ')
    
    print "loading data.."
    traindata = list(np.array(p.read_table('train.tsv'))[:,2])#Reading WebsiteText column for TF-IDF.
    testdata = list(np.array(p.read_table('test.tsv'))[:,2])
    y = np.array(p.read_table('train.tsv'))[:,-1] #reading label
    
    tfv = TfidfVectorizer(min_df=3,  max_features=None, strip_accents='unicode', analyzer='word',
    
    token_pattern=r'\w{1,}', ngram_range=(1, 2), use_idf=1, smooth_idf=1,sublinear_tf=1)
    
    rd = lm.LogisticRegression(penalty='l2', dual=True, tol=0.0001, C=1, fit_intercept=True,    intercept_scaling=1.0, class_weight=None, random_state=None)
    
    X_all = traindata + testdata
    lentrain = len(traindata)
    
    print "fitting pipeline"
    tfv.fit(X_all)
    print "transforming data"
    X_all = tfv.transform(X_all)
    X = X_all[:lentrain]
    X_test = X_all[lentrain:]
    
    print "20 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rd, X, y, cv=20, scoring='roc_auc'))
    
    #Add Two Integer Columns
    AlexaAndGoogleTrainData = list(np.array(p.read_table('train.tsv'))[2:,3])#Not sure if I am doing this correctly. Expecting it to contain AlexaRank and GooglePageRank columns.
    AlexaAndGoogleTestData = list(np.array(p.read_table('test.tsv'))[2:,3])
    AllAlexaAndGoogleInfo = AlexaAndGoogleTestData + AlexaAndGoogleTrainData
    
    #Add two columns to X.
    X = np.append(X, AllAlexaAndGoogleInfo, 1) #Think I have done this incorrectly.
    
    print "training on full data"
    rd.fit(X,y)
    pred = rd.predict_proba(X_test)[:,1]
    testfile = p.read_csv('test.tsv', sep="\t", na_values=['?'], index_col=1)
    pred_df = p.DataFrame(pred, index=testfile.index, columns=['label'])
    pred_df.to_csv('benchmark.csv')
        print "submission file created.."`
    

모든 의견을 보내 주셔서 감사합니다. 추가 정보가 필요하면 게시 해주세요!

수딥 유베 카르

나는 sklearn.preprocessing.StandardScaler당신이 시도하고 싶은 첫 번째 것입니다. StandardScaler는 모든 기능을 Mean-0-Std-1 기능으로 변환합니다.

  • 이것은 확실히 당신의 첫 번째 문제를 제거합니다. AlexaRank0 주위에 확산되고 경계가 지정됩니다. (예, 같은 거대한 AlexaRank조차도 83904803289480작은 부동 소수점 숫자로 변환됩니다). 물론 결과는 1사이의 정수가 10000아니지만 원래 순위와 동일한 순서를 유지합니다. 이 경우 순위를 제한하고 정규화하면 다음과 같이 두 번째 문제를 해결하는 데 도움이됩니다.
  • 정규화가 LR에서 도움이되는 이유를 이해하기 위해 LR의 로짓 공식을 다시 살펴 보겠습니다. 여기에 이미지 설명 입력
    귀하의 경우 X1, X2, X3는 세 가지 TF-IDF 기능이고 X4, X5는 Alexa / Google 순위 관련 기능입니다. 이제 방정식의 선형 형식은 계수 가 변수의 한 단위 변화에 대한 y의 로짓 변화를 나타냄을 시사 합니다. X4가 엄청난 순위 값으로 고정되어있을 때 어떤 일이 발생하는지 생각해보십시오 83904803289480. 이 경우 Alexa Rank 변수 LR 적합과 TF-IDF 값의 작은 변화는 LR 적합에 거의 영향을 미치지 않습니다. 이제 계수가 이러한 기능 간의 차이를 설명하기 위해 작거나 큰 값으로 조정할 수 있어야한다고 생각할 수 있습니다. 이 경우는 아닙니다 --- 중요한 변수의 크기뿐만 아니라 범위 도 중요 합니다 . Alexa Rank는 확실히 넓은 범위를 가지고 있으며이 경우 LR 적합을 확실히 지배해야합니다. 따라서 StandardScaler를 사용하여 모든 변수를 정규화하여 범위를 조정하면 적합도가 향상 될 것입니다.

다음은 X행렬의 크기를 조정하는 방법 입니다.

sc = proprocessing.StandardScaler().fit(X)
X = sc.transform(X)

동일한 스케일러를 사용하여 변환하는 것을 잊지 마십시오 X_test.

X_test = sc.transform(X_test)

이제 피팅 절차 등을 사용할 수 있습니다.

rd.fit(X, y)
re.predict_proba(X_test)

sklearn 전처리에 대한 자세한 내용은 http://scikit-learn.org/stable/modules/preprocessing.html을 확인하십시오.

편집 : pandas를 사용하여 구문 분석 및 열 병합 부분을 쉽게 수행 할 수 있습니다. 즉, 행렬을 목록으로 변환 한 다음 추가 할 필요가 없습니다. 또한 pandas 데이터 프레임은 열 이름으로 직접 인덱싱 할 수 있습니다.

AlexaAndGoogleTrainData = p.read_table('train.tsv', header=0)[["AlexaRank", "GooglePageRank"]]
AlexaAndGoogleTestData = p.read_table('test.tsv', header=0)[["AlexaRank", "GooglePageRank"]]
AllAlexaAndGoogleInfo = AlexaAndGoogleTestData.append(AlexaAndGoogleTrainData)

header=0tsv 파일의 원래 헤더 이름을 유지하기 위해 read_table에 인수를 전달 하고 있습니다. 또한 전체 열 집합을 사용하여 인덱싱 할 수있는 방법에 유의하십시오. 마지막으로, 당신은 할 수 스택 과 함께이 새로운 매트릭스를 X사용하여 numpy.hstack.

X = np.hstack((X, AllAlexaAndGoogleInfo))

hstack 길이가 동일하다면 수평으로 결합 된 2 개의 다차원 배열 형 구조.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

로지스틱 회귀를 사용한 텍스트 데이터

분류에서Dev

R의 로지스틱 회귀에 사용할 빈도 데이터 변환

분류에서Dev

Python에서 로지스틱 회귀를위한 사전 압축 해제

분류에서Dev

곱셈 대치 된 데이터를 사용한 이진 로지스틱 회귀

분류에서Dev

다중 클래스 로지스틱 회귀 분석을 위해 Octave에서 벡터 (데이터 세트)의 레이블 감지 벡터화

분류에서Dev

파이썬에서 l 로지스틱 회귀를 사용한 베타 계수 및 p- 값

분류에서Dev

Python에서 Sklearn을 사용한 로지스틱 회귀 함수

분류에서Dev

`ddply`가 그룹 별 로지스틱 회귀 (GLM)를 내 데이터 세트에 적용하지 못함

분류에서Dev

비선형 데이터에 대한 로지스틱 회귀

분류에서Dev

단일 주제 데이터에 대한 로지스틱 회귀?

분류에서Dev

로지스틱 회귀에서 가중치를 사용하는 방법

분류에서Dev

Python에서 로지스틱 회귀를 사용하는 예측 배열

분류에서Dev

tensorflow 단순 로지스틱 회귀

분류에서Dev

ROC 곡선을 사용하여 R에서 가중치 이진 로지스틱 회귀 (glm)에 대한 최적 컷오프 찾기

분류에서Dev

기능 중요도를 위해 SVM의 가중치 벡터 및 로지스틱 회귀를 사용하는 방법은 무엇입니까?

분류에서Dev

200 개 데이터 세트에 대한 비교 ANN 및 로지스틱 회귀

분류에서Dev

단순 로지스틱 회귀에 대한 Optim.jl

분류에서Dev

순위 순서를 사용하여 R에서 사망률 데이터 계산

분류에서Dev

Python에서 로지스틱 회귀를위한 다항식 기능 조정

분류에서Dev

Python에서 예측을위한 로지스틱 회귀 분류기

분류에서Dev

후순위 순회 재귀를 사용한 Depth First 검색으로 예기치 않은 출력이 생성됨

분류에서Dev

데이터베이스 사용자 지정 정렬 순서

분류에서Dev

theano를 사용한 로지스틱 회귀에서 공유 변수 브로드 캐스팅

분류에서Dev

Pandas에서 데이터 프레임의 값을 필터링하기위한 조회 참조로 사전 사용

분류에서Dev

R에서 로지스틱 회귀 (다항 사용)의 출력에서 발생하는 NA

분류에서Dev

Stargazer 또는 기타 패키지를 사용하여 Knitr에서 Zelig 로지스틱 회귀 분석

분류에서Dev

R의 glm에서 "weights"인수를 사용하는 로지스틱 회귀에 대한 ROC 곡선 수행

분류에서Dev

Pytorch에서 로지스틱 회귀를 사용한 예측은 무한대를 반환합니다.

분류에서Dev

R에서 로지스틱 회귀를 사용하여 예측 된 확률은 1과 같습니다.

Related 관련 기사

  1. 1

    로지스틱 회귀를 사용한 텍스트 데이터

  2. 2

    R의 로지스틱 회귀에 사용할 빈도 데이터 변환

  3. 3

    Python에서 로지스틱 회귀를위한 사전 압축 해제

  4. 4

    곱셈 대치 된 데이터를 사용한 이진 로지스틱 회귀

  5. 5

    다중 클래스 로지스틱 회귀 분석을 위해 Octave에서 벡터 (데이터 세트)의 레이블 감지 벡터화

  6. 6

    파이썬에서 l 로지스틱 회귀를 사용한 베타 계수 및 p- 값

  7. 7

    Python에서 Sklearn을 사용한 로지스틱 회귀 함수

  8. 8

    `ddply`가 그룹 별 로지스틱 회귀 (GLM)를 내 데이터 세트에 적용하지 못함

  9. 9

    비선형 데이터에 대한 로지스틱 회귀

  10. 10

    단일 주제 데이터에 대한 로지스틱 회귀?

  11. 11

    로지스틱 회귀에서 가중치를 사용하는 방법

  12. 12

    Python에서 로지스틱 회귀를 사용하는 예측 배열

  13. 13

    tensorflow 단순 로지스틱 회귀

  14. 14

    ROC 곡선을 사용하여 R에서 가중치 이진 로지스틱 회귀 (glm)에 대한 최적 컷오프 찾기

  15. 15

    기능 중요도를 위해 SVM의 가중치 벡터 및 로지스틱 회귀를 사용하는 방법은 무엇입니까?

  16. 16

    200 개 데이터 세트에 대한 비교 ANN 및 로지스틱 회귀

  17. 17

    단순 로지스틱 회귀에 대한 Optim.jl

  18. 18

    순위 순서를 사용하여 R에서 사망률 데이터 계산

  19. 19

    Python에서 로지스틱 회귀를위한 다항식 기능 조정

  20. 20

    Python에서 예측을위한 로지스틱 회귀 분류기

  21. 21

    후순위 순회 재귀를 사용한 Depth First 검색으로 예기치 않은 출력이 생성됨

  22. 22

    데이터베이스 사용자 지정 정렬 순서

  23. 23

    theano를 사용한 로지스틱 회귀에서 공유 변수 브로드 캐스팅

  24. 24

    Pandas에서 데이터 프레임의 값을 필터링하기위한 조회 참조로 사전 사용

  25. 25

    R에서 로지스틱 회귀 (다항 사용)의 출력에서 발생하는 NA

  26. 26

    Stargazer 또는 기타 패키지를 사용하여 Knitr에서 Zelig 로지스틱 회귀 분석

  27. 27

    R의 glm에서 "weights"인수를 사용하는 로지스틱 회귀에 대한 ROC 곡선 수행

  28. 28

    Pytorch에서 로지스틱 회귀를 사용한 예측은 무한대를 반환합니다.

  29. 29

    R에서 로지스틱 회귀를 사용하여 예측 된 확률은 1과 같습니다.

뜨겁다태그

보관