Những gì được suy ra trong python?

Chúng tôi cung cấp nền tảng thử nghiệm cho thử nghiệm được hỗ trợ bằng cách cho phép người dùng mô đun hóa các tác vụ phổ biến nhưng duy nhất trong quá trình triển khai cho mọi thử nghiệm, bao gồm cả việc biết cách

  • Thực hiện bất kỳ thiết lập ban đầu cần thiết nào để chuẩn bị sẵn sàng cho mô hình

  • Phân tích tập dữ liệu huấn luyện

  • Phân tích bộ dữ liệu thử nghiệm

  • Đào tạo mô hình đưa ra một ví dụ đào tạo

  • Đưa ra dự đoán cho một phiên bản thử nghiệm bằng mô hình hiện tại

Sau khi biết các triển khai cụ thể của nhiệm vụ, chúng tôi sẽ điều phối việc sử dụng các chức năng đó để thực hiện thử nghiệm theo cách tự động bằng cách tự động thực hiện các tác vụ có thể phổ biến đối với bất kỳ thử nghiệm nào

  • Chạy một thử nghiệm với việc triển khai tất cả các tác vụ mô-đun

  • Huấn luyện dần dần mô hình và nhận hiệu suất của mô hình hiện tại

  • Nhận các phiên bản thử nghiệm được gắn nhãn không chính xác bằng mô hình hiện tại

lựa chọn tính năng

Lựa chọn tính năng là một công cụ khác mà nhà nghiên cứu có thể thử nghiệm

cắt xén từ điển

Hiện tại, chúng tôi cung cấp một hình thức lựa chọn tính năng tương tự như cắt từ điển, bằng cách để bộ phân loại bỏ qua tất cả trừ các tính năng phổ biến nhất trong top-k. Điều này thường mang lại cho chúng tôi 90% lợi ích của việc lựa chọn tính năng mà không cần tính toán các số liệu phức tạp hơn

Cắt xén từ điển thông thường liên quan đến việc chuyển qua tập dữ liệu của bạn để trích xuất từ ​​vựng [tính năng]. Tuy nhiên, điều này là không khả thi khi bạn đang cố gắng học trong môi trường trực tuyến [phát trực tuyến], chẳng hạn như khi tài liệu của bạn liên tục được gửi đến, chẳng hạn như các dòng tweet từ một luồng từ Twitter. Để xử lý trường hợp này, chúng tôi đã tạo một cấu trúc dữ liệu theo dõi hiệu quả các thuật ngữ phổ biến nhất được cập nhật trong khi đào tạo. Điều này cho phép O[1] kiểm tra xem một tính năng có nằm trong top-k tính năng mà không cần phải chuyển qua từ vựng để thực hiện kiểm tra

Để trả về một chuỗi loại được suy ra từ các giá trị, hãy sử dụng chỉ mục. thuộc tính inferred_type trong Pandas

Lúc đầu, hãy nhập các thư viện cần thiết -

import pandas as pd
import numpy as np

Tạo chỉ mục. Đối với NaN, chúng tôi đã sử dụng thư viện numpy -

index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]

Hiển thị chỉ mục -

print["Pandas Index...\n",index]

Trả về một chuỗi kiểu được suy ra từ các giá trị -

print["\nThe inferred type...\n",index.inferred_type]

Ví dụ

Sau đây là mã -

import pandas as pd
import numpy as np

# Creating the index
# For NaN, we have used numpy library
index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]

# Display the index
print["Pandas Index...\n",index]

# Return an array representing the data in the Index
print["\nArray...\n",index.values]

# Check if the index is having NaNs
print["\nIs the Pandas index having NaNs?\n",index.hasnans]

# Return the dtype of the data
print["\nThe dtype object...\n",index.dtype]

# Return a string of the type inferred from the values
print["\nThe inferred type...\n",index.inferred_type]

đầu ra

Điều này sẽ tạo ra đoạn mã sau -

Pandas Index...
Index[['Car', 'Bike', nan, 'Car', nan, 'Ship', None, None], dtype='object']

Array...
['Car' 'Bike' nan 'Car' nan 'Ship' None None]

Is the Pandas index having NaNs?
True

The dtype object...
object

The inferred type...
Mixed

Một bước trong hành trình cải thiện việc gõ Python trong cơ sở mã của chúng tôi, giúp các nhà phát triển của chúng tôi đọc và viết mã an toàn

Gõ Python 🥁

Một năm trước, chúng tôi đã chỉ ra cách thêm tính năng kiểm tra kiểu vào cơ sở mã hiện có trong bài viết Nhập Python bằng mypy. Kiểm tra loại lũy tiến trên cơ sở mã lớn. Kể từ đó, chúng tôi đã đạt được những bước tiến lớn trong việc thêm các loại vào cơ sở mã của mình, điều này vừa cải thiện tính an toàn của mã cũng như sức mạnh của các công cụ của chúng tôi. Ví dụ: các IDE của chúng tôi hiện có thể suy ra các loại mà trước đây chúng không thể. Làm cách nào chúng ta có thể tận dụng kiểu suy luận đó để giúp chúng ta viết mã nhanh hơn, an toàn hơn, mạnh mẽ hơn?

Nhìn lại 1 năm đánh máy

Kể từ khi chúng tôi giới thiệu kiểm tra kiểu mypy cách đây 1 năm, chúng tôi đã thêm nhiều gợi ý kiểu mới và rất nhiều thành phần mới để kiểm tra kiểu. Sức mạnh của việc thêm chúng dần dần là mỗi nhóm có thể chọn làm việc gõ theo tốc độ của riêng họ. Đây là cách chúng tôi phân phối quyền sở hữu tại Alan

Ưu điểm an toàn của những loại đó là rất lớn, nhưng với tư cách là nhà phát triển Kotlin và người dùng Intellij, tôi cảm thấy thiếu một cái gì đó ở khía cạnh trải nghiệm của nhà phát triển. tại sao tôi không thể nhìn thấy các loại suy luận?

Cả hàm trả về `one` và `get_subscriptions_for_contracts` đều được nhập, làm cách nào để tôi biết loại `đăng ký`?

Lý do đằng sau điều này chỉ đơn giản là một giới hạn IDE của PyCharm [xem tại đây để biết báo cáo lỗi], không hiển thị các loại suy luận. Nhưng các loại được suy luận là gì và tại sao chúng lại hữu ích?

Hiểu tại sao suy luận kiểu lại quan trọng

Suy luận kiểu là cách trình kiểm tra kiểu lan truyền các kiểu trên các hàm và biến

Cho một hàm có kiểu gợi ý : str

  • nó trả về một giá trị kiểu str

Đưa ra một biến được gán từ phương thức đó trả về

  • nó sẽ được suy ra kiểu của nó là str ➡️ đó là suy luận kiểu
  • suy luận kiểu hoạt động quá độ cho các chức năng đã nhập

Điều này hữu ích cho trình kiểm tra kiểu, có thể theo dõi kiểu biến được suy luận và đảm bảo chương trình hoạt động ổn định theo thời gian, điều này đặc biệt hữu ích cho các ngôn ngữ động như Python

Điều này cũng hữu ích cho các IDE để đề xuất các cuộc gọi phương thức và các biến được liên kết với loại

Loại `my_string` là `str`, vì vậy IDE có thể đề xuất các đề xuất phù hợp 🤖Viết plugin cho PyCharm

Vì vậy, PyCharm không hiển thị các loại suy luận, chúng ta có thể làm gì với nó?

Những gì chúng tôi hiện có

Các loại suy luận không được hiển thị 😢

Những gì chúng ta muốn

Các loại suy luận được hiển thị [e. g. `công ty. Công ty`] 😄

Viết một phần bổ trợ cho bất kỳ sản phẩm JetBrains nào trên giấy có vẻ dễ dàng và được ghi chép đầy đủ, nhưng khó hơn vẻ ngoài của nó vì vô số lý do mà chúng ta sẽ tìm hiểu. Hãy xem qua các bước khác nhau cần thiết để tạo và duy trì plugin

Thiết lập môi trường

Cách dễ nhất để bắt đầu làm việc với plugin của bạn là sử dụng Mẫu plugin nền tảng IntelliJ, cung cấp cấu trúc dự án được đề xuất và các giá trị mặc định. Nó cũng thực sự hữu ích để có được các phiên bản phù hợp và liên kết đến tài liệu

Sau khi tạo, dự án của bạn sẽ trông như thế này. Plugin gợi ý Inlay Python

Mã hóa plugin và giải mã mã

Tùy thuộc vào loại plugin của bạn, [các] điểm vào sẽ khác nhau. Trong trường hợp của chúng tôi, chúng tôi hiển thị gợi ý loại bằng cách sử dụng nếp gấp, vì vậy chúng tôi cần xác định điểm vào gấp

Việc này được thực hiện trong

index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]
0, bên dưới thẻ
index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]
1, nơi chúng tôi cung cấp lớp triển khai tùy chỉnh. Trong trường hợp của chúng tôi, đây là
index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]
2

Mã thực hiện ba điều

[1] lặp lại trên các biểu thức đích - là các phép gán biến

  • ➡️
    index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]
    
    3

[2] sử dụng API Code Insight — để lấy thông tin loại biến được suy luận

  • ➡️
    index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]
    
    4

[3] trả về một nếp gấp — với thông tin loại biến

  • ➡️
    index = pd.Index[['Car','Bike', np.nan,'Car',np.nan, 'Ship', None, None]]
    
    5

Mã kết quả tương đối ngắn, nhưng tôi đã mất rất nhiều thời gian để viết. Tại sao vậy?

Đọc mã dịch ngược không vui chút nào 😬, nhưng nó đã giúp tôi gỡ lỗi và hiểu những phương thức và lớp nào có sẵn, đặc biệt là đối với API PSI và Code Insight

Phát hành plugin ra thị trường

Chúng ta gần đến nơi rồi 🎉. Chúng tôi chỉ cần phát hành plugin vào JetBrains Marketplace và thêm mô tả. Gợi ý khảm Python

Cập nhật plugin khi nâng cấp IDE

Thật không may, mỗi lần thay đổi phiên bản của nền tảng Intellij / PyCharm có thể làm hỏng plugin, điều này thỉnh thoảng xảy ra với chúng tôi

Plugin khai báo phiên bản hỗ trợ tối đa : str0, điều này gây ra lỗi plugin “không tương thích với phiên bản hiện tại” khi nâng cấp IDE

Hầu hết thời gian, chúng tôi chỉ cần nâng cấp phiên bản được hỗ trợ và chúng tôi sẵn sàng sử dụng [ví dụ xem tại đây]. Những lần khác, chúng tôi cần thực hiện các thay đổi đối với các lệnh gọi API, nếu một số trong số chúng đã bị xóa hoặc thay đổi, nhưng điều đó ít có khả năng xảy ra hơn

Lỗi "plugin không tương thích" đáng sợ được hiển thị trong IDE của người dùng 🐛Tận dụng đầu ra của plugin

Bây giờ chúng tôi đã phát hành phần bổ trợ của mình và nhóm kỹ sư đang sử dụng phần bổ trợ đó, những điểm chính của việc sử dụng phần bổ trợ này là gì?

  • Khả năng đọc — Chúng tôi có các loại cho từng biến cục bộ và biến toàn cục, ngay cả trong các vòng lặp và trình tạo, giúp chúng tôi đọc và hiểu mã

Các loại được suy luận được hiển thị dưới dạng gợi ý loại trong các nếp gấp [e. g. `tham số. str`] 📂
  • Kiểu bị thiếu hoặc lạ — Chúng ta có thể biết đối tượng hoặc hàm nào được nhập không đúng bằng cách xem biến có kiểu bị thiếu hoặc không mong muốn

Ồ không, kiểu trả về của phương thức này không được chú thích chính xác [vì vậy biến `constraint_list` không có kiểu suy luận] 🔥
  • Tùy chọn — Chúng ta có thể biết biến nào là : str1 bằng cách xem các loại được suy luận, nghĩa là chúng ta sẽ cần xử lý trường hợp : str2. Điều này cũng nhắc chúng tôi tạo các tiện ích đánh máy xung quanh việc xử lý các trường hợp đó, chẳng hạn như trình trợ giúp : str3

`current_version` được suy ra là `Optional`, nghĩa là chúng ta phải xử lý trường hợp `None` 💼
  • Kết hợp — Chúng tôi có thể cung cấp cả hai loại được mã hóa cứng và xem các loại được suy luận cùng một lúc

Biến `constraint_list` có loại được suy ra từ plugin và biến `constraint` có các loại được mã hóa cứng từ mã 💻
  • Đặt tên - Chúng tôi cũng có thể xóa loại khỏi tên biến, vì bây giờ chúng tôi thấy nó trong màn hình đầu tiên, để mã rõ ràng hơn và dễ bảo trì hơn. Điều này tăng gấp đôi khi xử lý đồng nghiệp troll của bạn 😆

🚎Kết luận

Hành trình cải thiện thiết lập công cụ của chúng tôi bằng cách tạo plugin mới đã mang lại cho chúng tôi nhiều bài học về cơ sở mã của chúng tôi và giúp chúng tôi làm việc hiệu quả hơn. Tại Alan, chúng tôi có quyền tự do sử dụng các công cụ mình muốn và chúng tôi được khuyến khích cải thiện thiết lập của mình nếu điều đó giúp ích cho năng suất của chúng tôi

Thiết lập của bạn để xử lý các gợi ý Python và kiểm tra kiểu Python trong cơ sở mã của bạn là gì?

Suy luận trong lập trình là gì?

Suy luận loại là khả năng tự động suy luận, một phần hoặc toàn bộ, loại biểu thức tại thời điểm biên dịch . Trình biên dịch thường có thể suy ra loại biến hoặc chữ ký kiểu của hàm mà không cần đưa ra chú thích loại rõ ràng.

kiểu suy luận với ví dụ là gì?

Techopedia giải thích kiểu suy luận

một loại suy luận là gì?

Suy luận có thể là suy diễn, quy nạp hoặc quy nạp . Suy luận suy diễn là mạnh nhất vì chúng có thể đảm bảo tính đúng đắn của kết luận của chúng. Suy luận quy nạp được sử dụng rộng rãi nhất, nhưng chúng không đảm bảo sự thật và thay vào đó đưa ra kết luận có thể đúng.

Loại suy luận trong go là gì?

Khi khai báo một biến mà không chỉ định loại rõ ràng [bằng cách sử dụng. = cú pháp hoặc var = cú pháp biểu thức], kiểu của biến được suy ra từ giá trị ở phía bên tay phải .

Chủ Đề