From sklearn.model_selection import train_test_split là gì

Tôi muốn tiến hành thuật toán học máy trong scikit learn, nhưng tôi không hiểu tham số random_statenày làm gì ? Tại sao tôi nên sử dụng nó ?Tôi cũng không hề hiểu số giả ngẫu nhiên là gì .train_test_splitchia những mảng hoặc ma trận thành những tập con ngẫu nhiên và kiểm tra. Điều đó có nghĩa là mỗi khi bạn chạy nó mà không chỉ định random_state, bạn sẽ nhận được một hiệu quả khác, đây là hành vi dự kiến. Ví dụ :

Chạy 1: >>> a, b = np.arange(10).reshape((5, 2)), range(5)>>> train_test_split(a, b)[array([[6, 7],        [8, 9],        [4, 5]]), array([[2, 3],        [0, 1]]), [3, 4, 2], [1, 0]]

Chạy 2 >>> train_test_split(a, b)[array([[8, 9],        [4, 5],        [0, 1]]), array([[6, 7],        [2, 3]]), [4, 2, 0], [3, 1]]

Nó thay đổi. Mặt khác, nếu bạn sử dụng random_state=some_number, thì bạn có thể đảm bảo rằng đầu ra của Run 1 sẽ bằng với đầu ra của Run 2, tức là phần tách của bạn sẽ luôn giống nhau. Không quan trọng random_statecon số thực tế là 42, 0, 21, … Điều quan trọng là mỗi khi bạn sử dụng 42, bạn sẽ luôn nhận được cùng một đầu ra trong lần đầu tiên bạn thực hiện phân tách. Điều này hữu ích nếu bạn muốn kết quả có thể lặp lại, ví dụ như trong tài liệu, để mọi người luôn có thể thấy các số giống nhau khi họ chạy các ví dụ. Trong thực tế tôi sẽ nói, bạn nên đặt random_statesố cố định trong khi kiểm tra công cụ, nhưng sau đó loại bỏ nó trong sản xuất nếu bạn thực sự cần một sự phân chia ngẫu nhiên (và không cố định).

Về câu hỏi thứ hai của bạn, trình tạo số giả ngẫu nhiên là trình tạo số tạo ra những số gần như thực sự ngẫu nhiên. Tại sao chúng không thực sự ngẫu nhiên nằm ngoài khoanh vùng phạm vi của câu hỏi này và có lẽ rằng sẽ không có yếu tố gì trong trường hợp của bạn, bạn hoàn toàn có thể xem ở đây để biết thêm chi tiết cụ thể .Nếu bạn không chỉ định random_statemã trong mã của mình, thì mỗi lần bạn chạy ( thực thi ) mã của mình, một giá trị ngẫu nhiên mới sẽ được tạo và những bộ tài liệu kiểm tra và giảng dạy sẽ có những giá trị khác nhau mỗi lần .Tuy nhiên, nếu một giá trị cố định và thắt chặt được gán như thế random_state = 42 thì mặc dầu bạn có thực thi mã của mình bao nhiêu lần thì hiệu quả sẽ giống nhau. ie, cùng những giá trị trong tập tài liệu thử nghiệm và kiểm tra .Nếu bạn không đề cập đến Random_state trong mã, thì bất kỳ khi nào bạn thực thi mã của mình, một giá trị ngẫu nhiên mới sẽ được tạo và những bộ tài liệu kiểm tra và giảng dạy sẽ có những giá trị khác nhau mỗi lần .Tuy nhiên, nếu bạn sử dụng một giá trị đơn cử cho Random_state ( Random_state = 1 hoặc bất kể giá trị nào khác ) mỗi khi tác dụng sẽ giống nhau, tức là, cùng những giá trị trong bộ tài liệu thử nghiệm và thử nghiệm. Tham khảo mã dưới đây : import pandas as pd from sklearn. model_selection import train_test_splittest_series = pd. Series ( range ( 100 ) ) size30split = train_test_split ( test_series, random_state = 1, test_size =. 3 ) size25split = train_test_split ( test_series, random_state = 1, test_size =. 25 ) common = [ element for element in size25split [ 0 ] if element in size30split [ 0 ] ] print ( len ( common ) )Không quan trọng bạn chạy mã bao nhiêu lần, đầu ra sẽ là 70. 70

Cố gắng loại bỏ Random_state và chạy mã. import pandas as pd from sklearn.model_selection import train_test_splittest_series = pd.Series(range(100))size30split = train_test_split(test_series,test_size = .3)size25split = train_test_split(test_series,test_size = .25)common = [element for element in size25split[0] if element in size30split[0]]print(len(common))

Bây giờ ở đây đầu ra sẽ khác nhau mỗi khi bạn thực thi mã .số Random_state phân loại những tập dữ liệu kiểm tra và giảng dạy một cách ngẫu nhiên. Ngoài những gì được lý giải ở đây, điều quan trọng cần nhớ là giá trị Random_state hoàn toàn có thể có ảnh hưởng tác động đáng kể đến chất lượng quy mô của bạn ( về chất lượng tôi về cơ bản có nghĩa là đúng mực để Dự kiến ). Ví dụ : Nếu bạn lấy một tập tài liệu nhất định và huấn luyện và đào tạo quy mô hồi quy với nó, mà không chỉ định giá trị Random_state, có năng lực mọi lúc, bạn sẽ nhận được tác dụng đúng chuẩn khác cho quy mô được huấn luyện và đào tạo của mình trên tài liệu thử nghiệm. Vì vậy, điều quan trọng là tìm giá trị Random_state tốt nhất để phân phối cho bạn quy mô đúng chuẩn nhất. Và sau đó, số lượng đó sẽ được sử dụng để tái tạo quy mô của bạn trong một dịp khác, ví dụ điển hình như một thí nghiệm điều tra và nghiên cứu khác. Làm như vậy, for j in range ( 1000 ) : X_train, X_test, y_train, y_test = train_test_split ( X, y, random_state = j, test_size = 0.35 ) lr = LarsCV ( ). fit ( X_train, y_train ) tr_score. append ( lr.score ( X_train, y_train ) ) ts_score. append ( lr.score ( X_test, y_test ) ) J = ts_score. index ( np.max ( ts_score ) ) X_train, X_test, y_train, y_test = train_test_split ( X, y, random_state = J, test_size = 0.35 ) M = LarsCV ( ). fit ( X_train, y_train ) y_pred = M.predict ( X_test ) `Nếu không có ngẫu nhiên được phân phối, mạng lưới hệ thống sẽ sử dụng ngẫu nhiên được tạo bên trong. Vì vậy, khi bạn chạy chương trình nhiều lần, bạn hoàn toàn có thể thấy những điểm tài liệu kiểm tra / đào tạo và giảng dạy khác nhau và hành vi sẽ không hề đoán trước. Trong trường hợp, bạn gặp sự cố với quy mô của mình, bạn sẽ không hề tạo lại quy mô đó vì bạn không biết số ngẫu nhiên được tạo khi bạn chạy chương trình .Nếu bạn thấy Trình phân loại cây – DT hoặc RF, họ sẽ cố gắng nỗ lực thiết kế xây dựng thử bằng cách sử dụng một kế hoạch tối ưu. Mặc dù hầu hết những lần kế hoạch này hoàn toàn có thể giống nhau, hoàn toàn có thể có những trường hợp cây hoàn toàn có thể khác nhau và do đó, Dự kiến. Khi bạn cố gắng nỗ lực gỡ lỗi quy mô của mình, bạn hoàn toàn có thể không hề tạo lại cùng một bộc lộ mà Cây được tạo. Vì vậy, để tránh tổng thể những rắc rối này, chúng tôi sử dụng Random_state trong khi kiến thiết xây dựng Quyết định phân loại hoặc RandomForestClassifier .Tái bút : Bạn hoàn toàn có thể đi sâu một chút ít về cách Cây được kiến thiết xây dựng trong Quyết định để hiểu rõ hơn về điều này .Randomstate về cơ bản được sử dụng để tái tạo yếu tố của bạn giống nhau mỗi khi nó được chạy. Nếu bạn không sử dụng ngẫu nhiên trong bộ tách đơn, mỗi lần bạn triển khai phân tách, bạn hoàn toàn có thể nhận được một tập hợp những điểm tài liệu kiểm tra và kiểm tra khác nhau và sẽ không giúp bạn gỡ lỗi trong trường hợp bạn gặp sự cố .Từ Đốc :Nếu int, Randomstate là hạt giống được sử dụng bởi trình tạo số ngẫu nhiên ; Nếu đối tượng người tiêu dùng RandomState, Randomstate là trình tạo số ngẫu nhiên ; Nếu Không, trình tạo số ngẫu nhiên là phiên bản RandomState được sử dụng bởi np.random .

sklearn.model_selection.train_test_split(*arrays, **options)[source]

Tách những mảng hoặc ma trận thành những tập con ngẫu nhiên và kiểm tra Parameters : … random_state : int, RandomState instance or None, optional ( default = None )Nếu int, Random_state là hạt giống được sử dụng bởi trình tạo số ngẫu nhiên ; Nếu đối tượng người dùng RandomState, Random_state là trình tạo số ngẫu nhiên ; Nếu Không, trình tạo số ngẫu nhiên là đối tượng người dùng RandomState được sử dụng bởi np.random. nguồn : http://scikit-learn.org/urdy/modules/generated/sklearn.model_selection.train_test_split.html’ ‘ ‘ Về trạng thái ngẫu nhiên, nó được sử dụng trong nhiều thuật toán ngẫu nhiên trong sklearn để xác lập hạt ngẫu nhiên được truyền cho bộ tạo số giả ngẫu nhiên. Do đó, nó không chi phối bất kể góc nhìn nào trong hành vi của thuật toán. Kết quả là, những giá trị trạng thái ngẫu nhiên triển khai tốt trong bộ xác nhận không tương ứng với những giá trị trạng thái sẽ hoạt động giải trí tốt trong một bộ thử nghiệm mới, chưa thấy. Thật vậy, tùy thuộc vào thuật toán, bạn hoàn toàn có thể thấy những hiệu quả trọn vẹn khác nhau bằng cách đổi khác thứ tự những mẫu giảng dạy. ‘ ‘ ‘ Nguồn : / stats / 263999 / is-random-state-a-parameter – để kiểm soát và điều chỉnh